我很困惑,爲什麼失敗,編譯:爲什麼不能接口指針接收器來實現
不可能類型斷言: FAZ沒有實現美孚(酒吧方法指針接收器)
,如果我做了接收器Faz.Bar一個FAZ值,而不是一個FAZ指針然後它編譯罰款,但我認爲它總是最好有指針接收器,以便值不被複制周圍?
package main
import (
"log"
)
func main() {
foo := New().(Faz)
log.Println(foo)
}
type Foo interface {
Bar() string
}
func New() Foo {
return &Faz{}
}
type Faz struct {
}
func (f *Faz) Bar() string {
return `Bar`
}
[看到這篇文章](http://jordanorelli.com/post/32665860244/how-to-use-interfaces-in-go)。 –
作爲一個側面說明:@KerrekSB引用的文章有助於我理解,當Go抱怨「MyFoo沒有實現Foo(Bar方法有指針接收器)」時,這並不意味着你無法使用指針接收器。這意味着實現'Bar'的'MyFoo'的方法_none_應該有指針接收器,或者_all_必須。這是一個與@xor1不同的問題,但其他人可能會發現這個問題,因爲他們正在混合他們的接收器類型(像我一樣),而不理解他們正在得到的錯誤。 – Hephaestus