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"
相关推荐
好学且牛逼的马6 分钟前
从“Oak”到“虚拟线程”:JDK 1.0到25演进全记录与核心知识点详解a
java·开发语言·python
追随者永远是胜利者9 分钟前
(LeetCode-Hot100)62. 不同路径
java·算法·leetcode·职场和发展·go
追随者永远是胜利者11 分钟前
(LeetCode-Hot100)56. 合并区间
java·算法·leetcode·职场和发展·go
追随者永远是胜利者20 分钟前
(LeetCode-Hot100)55. 跳跃游戏
java·算法·leetcode·游戏·go
shangjian00722 分钟前
Python基础-环境安装-Anaconda配置虚拟环境
开发语言·python
codeJinger27 分钟前
【Python】函数
开发语言·python
Penge6661 小时前
ES + HDFS 存储架构:ES 做索引,HDFS 存数据
后端
geovindu1 小时前
python: Command Pattern
开发语言·python·命令模式
Cosmoshhhyyy1 小时前
《Effective Java》解读第41条:用标记接口定义类型
java·开发语言
锅包一切2 小时前
【蓝桥杯JavaScript基础入门】一、JavaScript基础
开发语言·前端·javascript·蓝桥杯