Golang的嵌入和继承

前端之家收集整理的这篇文章主要介绍了Golang的嵌入和继承前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

golang不支持继承,只支持嵌入和聚合(匿名字段称为嵌入,具名字段称为聚合)。golang通过嵌入,可以到达类似继承的效果,而且更为简洁。

一个例子

typeBasestruct{
bint
}

func(base*Base)setB(iint){
base.b=base.b+i
}

typeDerivestruct{
Base//embed
dint//aggregation
}

func(derive*Derive)setD(iint){
derive.d=derive.d+i
}

funcmain(){
vardDerive
fmt.Println(d.b,d.d)
d.setB(5)
d.setD(10)
fmt.Println(d.b,d.d)
}

运行结果

wKioL1YfYSPA0NQ7AABd4hLIuMk657.jpg

自定义类型中嵌入一个类型后,嵌入类型中的任何方法都可以当作该自定义结构体自身的方法调用。例如在Derive中嵌入Base,则Base的任何数据成员和方法都可以被当作Derive自身的数据成员和方法调用。从实际作用上看,golang中的嵌入类似与C++中的继承。

猜你在找的Go相关文章