我自己找不到問題!感謝您的幫助,當我將空結構傳遞給 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 關注
- 113 瀏覽
添加回答
舉報
0/150
提交
取消