【go从零单排】结构嵌套struct embedding

🌈Don't worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

在Go语言中,结构体嵌套(struct embedding)是一种强大的特性,它允许在一个结构体中嵌入另一个结构体,从而实现组合和复用。嵌套结构体可以让你创建更加复杂的数据结构,同时保持代码的简洁性和可读性。

💻代码

go 复制代码
package main

import "fmt"

// type关键字定义base struct
type base struct {
	num int
}

// 定义函数describe,输入一个base类型,输出一个string
func (b base) describe() string {
	return fmt.Sprintf("base with num=%v", b.num)
}

// container结构嵌套base
type container struct {
	base
	str string
}

func main() {
	//使用字段初始化嵌套结构,指明了base
	//co是container的实例
	co := container{
		base: base{
			num: 1,
		},
		str: "some name",
	}
	//使用co.num 、co.str访问字段
	fmt.Printf("co={num: %v, str: %v}\n", co.num, co.str)
	//用全名访问字段co.base.num
	fmt.Println("also num:", co.base.num)
	//访问describe方法co.describe()
	fmt.Println("describe:", co.describe())
	//定义接口describer,内部调用describe方法
	type describer interface {
		describe() string
	}
	//实现接口,调用co结构,由于base已经被嵌套进来,可以直接实现base中的describe方法
	var d describer = co
	fmt.Println("describer:", d.describe())
}

//输出go run post.go
//co={num: 1, str: some name}
//also num: 1
//describe: base with num=1
//describer: base with num=1

🔍理解

  • 被嵌套的结构体字段直接可以访问,方法可以直接被调用
  • 代码复用:可以将公共字段和方法定义在一个结构体中,然后在其他结构体中嵌套,避免重复代码。
  • 逻辑分组:将相关的字段组合在一起,使得数据结构更加清晰。
  • 简化访问:嵌套结构体的字段可以直接通过外部结构体访问,无需每次都指定嵌套结构体的名称。

💡 Tips小知识点

💪无人扶我青云志,我自踏雪至山巅。

相关推荐
Bruce_Liuxiaowei3 小时前
网页版 DeepSeek “harness desktop“ WebGL 上下文创建失败排查实录
开发语言·javascript·webgl
小凯在掘金4 小时前
为什么箭头函数不能作为构造函数?
前端·javascript
可乐鸡翅yeah_4 小时前
网页端 M3U8 播放器性能监控,怎么看播放卡顿指标
javascript·ffmpeg·音视频·safari·m3u8
可乐鸡翅yeah_4 小时前
M3U8 防盗链 URL‑Token 签名,新手开发实操避坑
开发语言·javascript·ios·音视频·safari
2603_965896624 小时前
JS原型与原型链|对象继承与实例底层原理
开发语言·javascript·原型模式
JustHappy5 小时前
「vConsole MCP🛠️」我让 AI 直接看见任何 H5 的日志和请求帮你 debug
前端·javascript·程序员
xieter6 小时前
【技术精选】Node.js 核心事件循环机制与异步 I/O 深度剖析 (2026-10-02)
前端·javascript
想吃火锅10056 小时前
【leetcode】238.除了自身以外数组的乘积js
javascript·算法·leetcode
web打印社区7 小时前
政务办事大厅:叫号小票、办理回执网页怎么静默出纸
前端·javascript·vue.js·pdf·html·政务
MZ_ZXD0018 小时前
【关注可白嫖源码】--课程设计--毕业设计-- 29210 Vue.js 3+Springboot中药材基本信息与图片查询系统
javascript·spring boot·课程设计·毕设·大作业·程序开发·毕设代做