go语言中的继承 指的是一个结构体中采用匿名的方式包含另外一个结构体 这个就叫做继承, 注意这里的匿名
组合 一个结构体用命名的方式包含另外一个结构体,这个就叫做组合
继承代码示例
Go
type A struct {
Name string
Age int
}
type B struct {
Addr string
Name string
A
}
type C struct {
A
B
}
func main(){
var c1 C
c1.A.Name = "aa"
//c1.Name = "tom" // 报错 因为A和B里面都有Name 而C本身没有Name, ambiguous selector c1.Name
c1.Age = 99 // 这个Age最终只有A里面有
}
组合
Go
type D struct {
a A // 结构体嵌入了其他结构体并指定了名称,这时叫做组合
B
}
这时 要访问a里面的内容,则必须带上名字
var d1 D
d1.a.Name = "jack"