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"
相关推荐
晚烛几秒前
CANN 模型热更新:不停机模型切换与无缝更新实战指南
开发语言·python
谢白羽1 分钟前
agent memory论文解析一:解析项目(a-mem)
开发语言·php·论文·agent·a-mem·实际项目
迷渡14 分钟前
用 Rust 重写的 Bun 有 13365 个 unsafe!
开发语言·后端·rust
AI_大白19 分钟前
DeepSeek Function Calling 接入实时行情:从工具定义到多轮查询的完整示例
后端·架构
吃好睡好便好27 分钟前
在Matlab中绘制质点三维运动轨迹图
开发语言·学习·matlab·信息可视化
代码村新手28 分钟前
C++-多态
开发语言·c++
用户3983461612032 分钟前
Go-Spring 实战第 10 课 —— 依赖注入的方式:字段注入和构造函数注入
spring·go
雨落在了我的手上38 分钟前
初识java(九):类和对象(⼀)
java·开发语言
Cosolar40 分钟前
从零搭建本地 RAG 系统:LangChain + LM Studio 完整实战指南
人工智能·后端·面试