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"
相关推荐
PyAIGCMaster9 分钟前
开发了一个全自动接入wordpress的saas发文章的网站,记录一下如何实现,有需要的朋友联系。
java·开发语言·数据库
m0_5281744512 分钟前
ZLibrary反爬机制概述
开发语言·c++·算法
xiangpanf16 分钟前
PHP vs Python:30字看透两大语言差异
开发语言·php
江沉晚呤时20 分钟前
.NET 9 快速上手 RabbitMQ 直连交换机:高效消息传递实战指南
开发语言·分布式·后端·rabbitmq·.net·ruby
yunyun3212333 分钟前
嵌入式C++驱动开发
开发语言·c++·算法
编码忘我35 分钟前
java单机滑动窗口限流器
后端
左左右右左右摇晃36 分钟前
Java笔记 —— 值传递与“引用传递”
java·开发语言·笔记
chushiyunen38 分钟前
python语法-继承、方法命名、单例等
开发语言·python
编码忘我39 分钟前
redis的数据类型及java调用案例
后端
编码忘我40 分钟前
redis分布式锁
后端