在Go语言里,没有面向对象这个概念,自然就没有继承,但它支持结构体组合;你可以通过在结构体内嵌套结构体实现组合;
package main
type PersionInfo struct{
firstname string
lastname string
age int
}
func (p *PersionInfo)fullname()string{
return p.firstname+" "+p.lastname
}
type Manager struct{
*PersionInfo
Level int
}
func main(){
m := Manager{
PersionInfo:&PersionInfo{"aaa","bbb",666},
Level:9,
}
println(m.PersionInfo.fullname())
println(m.fullname())
}
Manager结构体有一个PersionInfo类型的字段,没有定义字段名;
实际上编译器会赋予它字段名,这里为PersionInfo,你可以通过这个字段进行访问;
println(m.PersionInfo.fullname())和 println(m.fullname()) 的输出一样。