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 分钟前
你们觉得房贷多少,没有压力 | 沸点周刊 4.30
前端·人工智能·后端
南境十里·墨染春水3 分钟前
C++笔记 STL——set
开发语言·c++·笔记
L1624764 分钟前
Win11 共享→Windows Server 访问故障总结(极简可复用)
开发语言·windows·php
oldking呐呐32 分钟前
MySQL从建库到删库跑路 -- 4.表的操作
后端·mysql
渐儿41 分钟前
I/O 多路复用与 Reactor 模式:高性能服务的根基
后端
.柒宇.44 分钟前
FastAPI 基础指南:从入门到实战
开发语言·python·fastapi
空中海1 小时前
Spring Boot 专家级面试题库
spring boot·后端·面试
xyq20241 小时前
Go 错误处理
开发语言
fliter1 小时前
Cloudflare: Agent 现在可以自己注册账号、购买域名、部署上线了
后端
JAVA面经实录9171 小时前
企业级java+LangChain4j-RAG系统 限流熔断降级
java·开发语言·分布式·langchain