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"
相关推荐
java1234_小锋13 小时前
Java高频面试题:怎么实现Redis的高可用?
java·开发语言·redis
ん贤13 小时前
AI 大模型落地系列|Eino 编排篇:从自动执行到人工接管,如何避免Agent一把梭
人工智能·ai·golang·eino
oyguyteggytrrwwwrt13 小时前
抄写YOLOE源码——先抄写ultralytics包,关于__init__.py
开发语言·python
格林威13 小时前
Baumer相机铝箔表面针孔检测:提升包装阻隔性的 7 个核心策略,附 OpenCV+Halcon 实战代码!
开发语言·人工智能·数码相机·opencv·计算机视觉·c#·工业相机
日出等日落13 小时前
用 Kavita实现我的远程数字书屋搭建记!
java·开发语言·ide·vscode·编辑器
snakeshe101013 小时前
MyBatis 从入门到实践:ORM 核心机制与动态 SQL 全解析
后端
我是伪码农14 小时前
JS 复习
开发语言·前端·javascript
沐知全栈开发14 小时前
键盘快捷键:提升工作效率的利器
开发语言
野犬寒鸦14 小时前
高并发利器:SingleFlight优化指南(Java版实现与项目实战)
服务器·开发语言·redis·后端·面试
Alan GEO实施教练14 小时前
实用新型专利申请代理机构选择:关键考量因素与实操要点讲解
java·开发语言·python