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"
相关推荐
计算机安禾3 分钟前
【c++面向对象编程】第27篇:空类的大小为什么是1?——C++对象标识的秘密
开发语言·c++·算法
河阿里3 分钟前
Python容器:特性、区别和使用场景
开发语言·python
我不是8神3 分钟前
面试题:Gorutine泄露的条件有哪些?
java·开发语言
奇树谦4 分钟前
QListView和QListWidget区别详细说明
开发语言
郭龙_Jack5 分钟前
Java并发包(JUC)深度解析:从LockSupport到云原生演进
开发语言·云原生·java并发编程
大熊程序猿6 分钟前
ASP.NET Core 认证授权:JWT与OAuth2实战
后端·asp.net
Highcharts.js6 分钟前
AI向量知识谱系图表创建示例代码|Highcharts网络图表(networkgraph)搭建案例
开发语言·前端·javascript·网络·信息可视化·编辑器·highcharts
周杰伦fans11 分钟前
C# AutoCAD 二次开发极简入门:从环境搭建到高效实战
开发语言·c#
hhb_61817 分钟前
Swift技术难点梳理与实战案例解析
开发语言·ios·swift