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"
相关推荐
TechWayfarer几秒前
AI的幻觉谁来买单?智能体时代的数据溯源与鉴权
开发语言·python·安全·ai
Str_Null1 分钟前
Python 自动线性化 HTML/MD 表格的工程实践(一个读取表格并且提供输出的工具)
开发语言·python·html
Shadow(⊙o⊙)1 分钟前
qt内详解信号和槽的基本概念+实例演示
开发语言·前端·c++·qt·学习
夕除4 分钟前
spring boot 4
java·spring boot·后端
asdzx678 分钟前
使用 C# 添加或读取 Excel 公式:完整指南
开发语言·c#·excel
磊 子8 分钟前
多继承和多态性
开发语言·c++
加号39 分钟前
【C#】 中 BCD 字节数组转十进制字符串的原理与实现思路
开发语言·c#
AbandonForce10 分钟前
C++11:列表初始化||右值和移动语义||引用折叠和完美转发||可变参数模板||lambda表达式||包装器(function bind)
开发语言·数据结构·c++·算法
starsky7623810 分钟前
spring boot——前后端分离
java·spring boot·后端
jghhh0110 分钟前
燃料电池电源 Matlab 仿真方案
开发语言·matlab