3
我的理解是,Cat
和*Cat
是Go中的不同類型。那爲什麼他們的名字相沖突?爲什麼不能在Go中使用指針和非指針接收器的方法?
type Animal interface {
GetName() string
SetName(string)
}
type Cat struct {
Name string
}
func (c *Cat) GetName() string {
return c.Name
}
func (c Cat) GetName() string {
return c.Name
}
func (c *Cat) SetName(s string) {
c.Name = s
}
Comiler響應:
方法重新聲明:Cat.GetName
它要麼是一個錯誤或實施的故意一部分,因爲有方法的兩個版本只是愚蠢。這就是解引用/地址。如果你有一個指針或一個實例,你可以很容易地得到另一個。 – evanmcdonnal
考慮'interface {GetName()string}'如果將一個實現此接口的結構傳遞給一個將該接口作爲參數的函數,哪個方法會被調用? – mpm