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

我自己找不到问题!感谢您的帮助,当我将空结构传递给 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)


呼如林
浏览 126回答 1
1回答

肥皂起泡泡

你的 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。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go