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"
相关推荐
小小鱼儿飞1 小时前
QT音乐播放器18----新歌速递播放、隐藏顶部和底部工具栏、自定义ToolTips
开发语言·qt
程序员爱钓鱼1 小时前
Python 综合项目实战:学生成绩管理系统(命令行版)
后端·python·ipython
程序员爱钓鱼1 小时前
REST API 与前后端交互:让应用真正跑起来
后端·python·ipython
穆雄雄1 小时前
Rust 程序适配 OpenHarmony 实践:以 sd 工具为例
开发语言·rust·harmonyos
0***142 小时前
Swift资源
开发语言·ios·swift
z***I3942 小时前
Swift Tips
开发语言·ios·swift
J***Q2922 小时前
Swift Solutions
开发语言·ios·swift
铅笔小新z2 小时前
C++入门指南:开启你的编程之旅
开发语言·c++
Gavin-Wang2 小时前
Swift + CADisplayLink 弱引用代理(Proxy 模式) 里的陷阱
开发语言·ios·swift
Dcs4 小时前
Java 中 UnaryOperator 接口与 Lambda 表达式的应用示例
java·后端