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 关注
- 192 浏览
添加回答
举报
