1 回答

TA貢獻2021條經驗 獲得超8個贊
您可以嵌入 2種接口類型,它們僅從不同類型定義要使用(“繼承”)的部分(方法):
type AB struct {
Hier
Byer
}
type Hier interface {
SayHi()
}
type Byer interface {
SayBye()
}
基本上使用Hierand Byer“屏蔽”其他方法,因此嵌入它們(而不是Aand B)將解決名稱沖突(歧義)。
讓我們讓實現打印他們是誰以進行驗證:
func (a A) SayHi() { fmt.Println("A says Hi") }
func (a A) SayBye() { fmt.Println("A says Bye") }
func (b B) SayHi() { fmt.Println("B says Hi") }
func (b B) SayBye() { fmt.Println("B says Bye") }
使用它:
var ab Foo = AB{
Hier: A{},
Byer: B{},
}
ab.SayHi()
ab.SayBye()
輸出將是(在Go Playground上嘗試):
A says Hi
B says Bye
當然,如果我們現在有Hierand Byer,我們可以使用它們來簡化Foo,如果我們想:
type Foo interface {
Hier
Byer
}
- 1 回答
- 0 關注
- 148 瀏覽
添加回答
舉報