golang中的继承和组合的区别

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"
相关推荐
myloveasuka7 小时前
Java与C++多态访问成员变量/方法 对比
java·开发语言·c++
2301_821700537 小时前
C++编译期多态实现
开发语言·c++·算法
Andya_net7 小时前
Spring | @EventListener事件机制深度解析
java·后端·spring
奥地利落榜美术生灬7 小时前
c++ 锁相关(mutex 等)
开发语言·c++
xixihaha13247 小时前
C++与FPGA协同设计
开发语言·c++·算法
重庆小透明7 小时前
【java基础篇】详解BigDecimal
java·开发语言
ID_180079054737 小时前
模拟1688商品详情的Python API实现,返回符合风格的JSON数据
开发语言·python·json
小小怪7508 小时前
C++中的函数式编程
开发语言·c++·算法
金山几座8 小时前
C#学习记录-事件
开发语言·学习·c#
无限大68 小时前
《AI观,观AI》:专栏总结+答疑|吃透核心,解决你用AI的所有困惑
前端·后端