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"
相关推荐
Simon席玉1 分钟前
C++的命名重整
开发语言·c++·华为·harmonyos·arkts
chao1898442 分钟前
MATLAB中的多重网格算法与计算流体动力学
开发语言·算法·matlab
木盏2 分钟前
三维高斯的分裂
开发语言·python
a程序小傲8 分钟前
京东Java面试被问:ZGC的染色指针如何实现?内存屏障如何处理?
java·后端·python·面试
精神小伙就是猛9 分钟前
C# sealed密封 追本溯源
开发语言·c#
真正的醒悟20 分钟前
图解网络35
开发语言·网络·php
vx_bisheyuange20 分钟前
基于SpringBoot的老年一站式服务平台
java·spring boot·后端·毕业设计
大连好光景32 分钟前
批量匿名数据重识别(debug记录)
开发语言·python
计算机毕设VX:Fegn089532 分钟前
计算机毕业设计|基于Java + vue水果商城系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot·课程设计
清水白石00839 分钟前
《深入 Celery:用 Python 构建高可用任务队列的实战指南》
开发语言·python