我自己找不到问题!感谢您的帮助,当我将空结构传递给 getPets() 这是一个接口接收器时,我期待结构返回的空引用,但我得到了这个错误 **dog 没有实现宠物(说话的类型错误方法)**我无法弄清楚我已经尝试了 6 个小时import "fmt"type pets interface { speak(name []byte) dog}type dog struct { dogs []string name string}type cat struct { cats []string name string}func (d *dog) speak(name []byte) *dog { (*d).dogs = append(d.dogs, string(name)) return d}// func (c *cat) speak(name []byte) *cat {// (*c).cats = append(c.cats, string(name))// return c// }func getPets(f pets) { fmt.Println(f.speak([]byte("hello")))}func main() { d := dog{} getPets(d)
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
你的 pets 界面需要一个函数speak(name []byte) dog,但你为 dog 类型编写的函数是speak(name []byte) *dog.
func (d *dog) speak(name []byte) dog {
d.dogs = append(d.dogs, string(name))
return *d
}
或者
type pets interface {
speak(name []byte) *dog
}
type dog struct {
dogs []string
name string
}
func (d *dog) speak(name []byte) *dog {
d.dogs = append(d.dogs, string(name))
return d
}
问题是,*dog并且dog是不同的类型。*dog是指向 a 的指针dog。
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消
