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"
相关推荐
曹轲恒15 小时前
Java中断
java·开发语言
Grassto15 小时前
深入 `modload`:Go 是如何加载并解析 module 的
golang·go·go module
施棠海16 小时前
监听与回调的三个demo
java·开发语言
時肆48516 小时前
C语言造轮子大赛:从零构建核心组件
c语言·开发语言
赴前尘16 小时前
golang 查看指定版本库所依赖库的版本
开发语言·后端·golang
de之梦-御风16 小时前
【C#.Net】C#开发的未来前景
开发语言·c#·.net
知乎的哥廷根数学学派17 小时前
基于数据驱动的自适应正交小波基优化算法(Python)
开发语言·网络·人工智能·pytorch·python·深度学习·算法
de之梦-御风17 小时前
【C#.Net】C#在工业领域的具体应用场景
开发语言·c#·.net
sunfove17 小时前
将 Python 仿真工具部署并嵌入个人博客
开发语言·数据库·python
Learner17 小时前
Python类
开发语言·python