🌈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小知识点
💪无人扶我青云志,我自踏雪至山巅。