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"
相关推荐
Wang's Blog6 小时前
Java框架快速入门: Spring Bean核心配置与实例化详解
java·开发语言·spring
用户40966601317516 小时前
MySQL 事务与锁机制实战:从隔离级别到死锁排查
后端
zhangxingchao6 小时前
AI应用开发九:从 Hermes Agent 学长期记忆
前端·人工智能·后端
aaPIXa6226 小时前
C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
开发语言·c++·edge
阿pin6 小时前
Java随笔-GC收集器工作机制
java·开发语言·jvm·gc
2601_962440847 小时前
计算机毕业设计之jsp旅游网站管理系统
java·开发语言·算法·课程设计·旅游·推荐算法
默默敲代码的徐哥儿7 小时前
八股文整理——后端
java·开发语言·spring boot·后端·学习
自由的裙子7 小时前
ASP.NET路由模型解析
后端·asp.net
matlab代码7 小时前
基于matlab人脸门禁识别系统(可增加其它人脸图像)源码40期】
开发语言·matlab·人脸识别·人脸门禁
k↑7 小时前
SpringCloud + React19 集成Scalar的API文档
后端·spring·spring cloud