我是新手gopher,試圖讓我的頭在指針接收器和接口周圍。接口和指針接收器
type Foo interface {
foo()
}
type Bar struct {}
func (b *Bar) foo() {}
根據上述定義..
--- Allowed ---------
b := Bar{}
b.foo()
--- Not allowed -----
var foo Foo = Bar{}
獲取編譯器錯誤: 不能在分配使用欄文字(類型吧)爲Foo類型: 酒吧沒有實現美孚(foo的方法指針接收器)
我知道編譯器在第一種場景中代表我們執行一些指針轉換和解引用。它爲什麼不在第二種情況下做同樣的事情?
所以你不問如何使它工作,你問__why__它不工作? (btw'var foo Foo =&Bar {}'作品) – RayfenWindspear