2 回答
TA贡献1796条经验 获得超4个赞
Go 中没有继承。使用成分:
type common struct {
data DatumType
}
func (c *common) commonFunc() {
// Do something with data.
}
type derived1 struct {
common
otherField1 int
}
// Implement other methods on derived1.
type derived2 struct {
common
otherField2 string
}
// Implement other methods on derived2.
TA贡献1815条经验 获得超10个赞
Go 没有继承。相反,它提供了嵌入的概念。
在这种情况下,您不需要/不想定义base为interface. 使其成为结构并将函数定义为方法。然后嵌入base到您的派生结构中将为它们提供这些方法。
type base struct{
data DatumType
}
func (b base) func1(){
}
func (b base) func2(){
}
func (b base) common_func(){
}
type derived1 struct {
base // anonymous meaning embedding
}
type derived2 struct {
base // anonymous meaning embedding
}
现在你可以这样做:
d := derived1{}
d.func1()
d.func2()
d.common_func()
并且(正如 David Budworth 在评论中指出的那样)您可以base通过引用它的类型名称来访问字段,如下所示:
d.base.data = something
- 2 回答
- 0 关注
- 163 浏览
添加回答
举报