在 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

}

是否Vegetable和Salt两者都满足Food,即使一个是指针,另一个直接是结构?


婷婷同学_
浏览 198回答 2
2回答

富国沪深

通过编译代码很容易得到答案:prog.go:19: invalid receiver type Vegetable (Vegetable is a pointer type)该错误基于以下规范要求:接收器类型必须采用 T 或 *T 形式,其中 T 是类型名称。T 表示的类型称为接收器基类型;它不能是指针或接口类型,并且必须在与方法相同的包中声明。(强调我的)声明:type Vegetable *vegetable_s声明一个指针类型,即。Vegetable没有资格作为方法接收者。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go