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"
相关推荐
rKWP8gKv76 分钟前
单例模式在Java中的7种实现:从懒汉式到静态内部类
java·开发语言·单例模式
杨运交9 分钟前
[007][租户模块]基于 TransmittableThreadLocal 与 TaskDecorator 的租户上下文传递设计
后端
huzhongqiang14 分钟前
Python全站链接爬取工具优化:支持过滤和断点续爬
后端·爬虫
神奇小汤圆15 分钟前
SpringBoot 4 最被低估的新特性:Spring Data AOT
后端
杨运交16 分钟前
[004][缓存模块]Caffeine缓存自定义:构建灵活的Spring Boot缓存管理器
后端
刀法如飞20 分钟前
一款开箱即用的Flask 3.0 MVC工程脚手架,面向AI开发
后端·python·flask
xingpanvip25 分钟前
星盘接口开发文档:组合三限盘接口指南
android·开发语言·前端·python·php·lua
神奇小汤圆36 分钟前
美团Java一面:布隆过滤器有什么缺点?
后端
Zfox_38 分钟前
【LangChain】核心组件(上)
后端·langchain·ai编程