使用匿名方法嵌入時,有沒有方法可以從「父」結構中的方法訪問「子」結構的名稱?使用嵌入去思考
例如:
type Animal struct{}
func (a Animal) SayName() string {
v := reflect.TypeOf(a)
return v.Name()
}
type Zebra struct {
Animal
}
var zebra Zebra
zebraName := zebra.SayName() // "Animal" want "Zebra"
的SayName()方法返回的 「父」 的type.Name()
。
我意識到我可以做這樣的事情,但因爲這是一個API,並且會經常重複使用。我寧願有一個不太重複的解決方案。
type Animal struct{
Name string
}
func (a Animal) SayName() string {
return a.Name
}
type Zebra struct {
Animal
}
zebra := &Zebra{Name:"Zebra"}
zebraName := zebra.SayName() // "Zebra"
關於如何實現這一點的任何想法? Go有可能嗎?
謝謝。
謝謝,這可能是我最終採取的路徑。實際的用例涉及多種方法,一些在「實例」上執行,一些在「類」上執行。爲了一致性,我希望能夠使用點符號來調用這些方法。問題是每個這些方法都需要知道結構的名稱。 – 2012-04-21 17:44:43