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"
相关推荐
xiaoye-duck几秒前
【C++:C++11】核心特性实战:详解C++11列表初始化、右值引用与移动语义
开发语言·c++·c++11
Go_error4 分钟前
Go 并发控制 errgroup.Group
后端·go
希望永不加班15 分钟前
SpringBoot 事件机制:ApplicationEvent 与监听器
java·开发语言·spring boot·后端·spring
IVAN不想说话28 分钟前
为什么 Karpathy 的「LLM Wiki」突然火了?
后端
Nyarlathotep011334 分钟前
自动内存管理(2):垃圾收集器与内存分配策略
java·jvm·后端
14年ABAP码农35 分钟前
ABAP - call API with x-www-form-urlencoded
开发语言
SuniaWang41 分钟前
Java 17实战:Record与密封类的黄金搭档
java·开发语言·python
2401_8274999943 分钟前
python项目实战10-网络机器人03
开发语言·python·php
人活一口气44 分钟前
Spring Boot 3.2 + GraalVM原生镜像:启动速度从秒到毫秒的极致优化
后端
小江的记录本1 小时前
【Transformer架构】Transformer架构核心知识体系(包括自注意力机制、多头注意力、Encoder-Decoder结构)
java·人工智能·后端·python·深度学习·架构·transformer