匿名字段与嵌套结构体
结构体支持匿名字段和嵌套,便于组合复用。
1. 嵌套结构体
定义结构体作为字段嵌入另一个结构体:
type Address struct {
City string
State string
}
type Person struct {
Name string
Address Address
}
p := Person{
Name: "Alice",
Address: Address{
City: "Beijing",
State: "BJ",
},
}
fmt.Println(p.Address.City) // 输出:Beijing
`
2. 匿名字段
匿名字段是只写类型名的字段,字段名隐式为类型名:
type Person struct {
Name string
Address // 匿名字段
}
p := Person{
Name: "Bob",
Address: Address{
City: "Shanghai",
State: "SH",
},
}
fmt.Println(p.City) // 直接访问匿名字段内的 City,输出:Shanghai
3. 字段冲突
当多个匿名字段含相同字段名,访问时需指定具体字段:
type A struct {
Name string
}
type B struct {
Name string
}
type C struct {
A
B
}
c := C{}
c.A.Name = "Alice"
c.B.Name = "Bob"
匿名字段和嵌套结构体增强结构体的表达力,实现简单的继承与组合。
相关内容
- 什么是 Go Go 是由 Google 开发的一种开源编程语言,以简洁、高效、并发编程支持强著称,广泛应用于后端开发、云原生和微服务等领域。
- Go 的特点与适用场景 Go 语言以高并发、快速编译、简洁语法和强大标准库著称,适用于构建高性能网络服务、微服务架构和云原生应用。
- 安装 Go(Windows/Linux/macOS) 本节介绍如何在 Windows、Linux 和 macOS 上安装 Go 语言开发环境,包含安装步骤、验证方法及常见注意事项。
- 设置环境变量 本节介绍如何为 Go 语言配置环境变量,包括 GOPATH、GOROOT、PATH 等关键变量,适用于 Windows、Linux 和 macOS 系统。
- 第一个 Go 程序(Hello World) 本节将带你编写第一个 Go 程序“Hello, World”,帮助你快速了解 Go 的基础语法和程序结构。
- Go Modules 简介 本节介绍 Go Modules 的基本概念与用法,它是 Go 官方推荐的依赖管理方式,支持版本控制、依赖隔离和构建一致性。