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"
相关推荐
t***5442 小时前
如何配置Orwell Dev-C++使用Clang
开发语言·c++
CoderCodingNo2 小时前
【信奥业余科普】C++ 的奇妙之旅 | 13:为什么 0.1+0.2≠0.3?——解密“爆int”溢出与浮点数精度的底层原理
开发语言·c++
杨凯凡2 小时前
【021】反射与注解:Spring 里背后的影子
java·后端·spring
Ares-Wang3 小时前
Flask》》 Flask-Bcrypt 哈希加密
后端·python·flask
小码哥_常3 小时前
Spring Boot项目大变身:为何要拆成这六大模块?
后端
kongba0073 小时前
项目打包 Python Flask 项目发布与打包专家 提示词V1.0
开发语言·python·flask
froginwe113 小时前
C 语言测验
开发语言
今夕资源网4 小时前
powershell工具包 安装升级脚本并设置UTF-8 环境快捷方式创建 将powershell的编码默认改为UTF-8
开发语言·utf-8·powershell·utf-8编码·powershell7·powershell5·设置utf-8编码
机器视觉知识推荐、就业指导4 小时前
Qt:真正的门槛不是入门,而是维护
开发语言·qt
hhb_6184 小时前
Dylan 语言核心特性与工程实践深度解析
开发语言·c#