为了账号安全,请及时绑定邮箱和手机立即绑定

dog 没有实现宠物(speak 方法的类型错误)

dog 没有实现宠物(speak 方法的类型错误)

Go
呼如林 2022-05-10 14:05:21
我自己找不到问题!感谢您的帮助,当我将空结构传递给 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。


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号