Golang中的结构体组合


在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()) 的输出一样。


转载声明
本文版权归作者所有

如需转载,请注明出处;本文地址: https://www.perfcode.com/p/golang-composition.html