小编典典

在Go中,类型和指向类型的指针都可以实现接口吗?

go

例如下面的示例:

type Food interface {
    Eat() bool
}

type vegetable_s struct {
    //some data
}

type Vegetable *vegetable_s

type Salt struct {
    // some data
}

func (p Vegetable) Eat() bool {
    // some code
}

func (p Salt) Eat() bool {
    // some code
}

DO VegetableSalt两个满足Food,即使一个是一个指针,另一个是直接一个结构?


阅读 260

收藏
2020-07-02

共1个答案

小编典典

通过编译代码很容易得到答案:

prog.go:19: invalid receiver type Vegetable (Vegetable is a pointer type)

该错误是基于以下规格要求:

接收器类型必须采用T或 T的形式,其中T是类型名称。用T表示的类型称为接收方基本类型; 它不能是指针或接口类型*
,并且必须在与方法相同的包中声明。

(强调我的)

声明:

type Vegetable *vegetable_s

声明一个 指针 类型,即 Vegetable没有资格作为方法接收者。

2020-07-02