结构体 struct
struct 定义/初始化、字段访问、结构体字面量、嵌套/匿名结构体
结构体 struct
Go 没有 class——用 struct 组合数据,用方法(receiver function)定义行为。
学完本章你将: 掌握 struct 定义/初始化、字段访问、嵌入、匿名结构体。
定义与初始化
go
package main
import "fmt"
type Person struct {
Name string
Age int
City string
}
func main() {
// 多种初始化方式
p1 := Person{"小明", 25, "北京"} // 按顺序
p2 := Person{Name: "小红", Age: 22} // 命名(City 为零值)
p3 := Person{} // 全零值
// 访问
fmt.Println(p1.Name)
p1.Age = 26
}
结构体嵌入(组合代替继承)
go
type Address struct {
City string
ZipCode string
}
type User struct {
Name string
Address // 嵌入——不是继承!
}
func main() {
u := User{
Name: "小明",
Address: Address{City: "北京", ZipCode: "100000"},
}
// 提升字段——直接访问
fmt.Println(u.City) // "北京"(不是 u.Address.City)
fmt.Println(u.ZipCode) // "100000"
}
💡 Go 用组合代替继承——嵌入 struct 后,外层可以直接访问内层的字段和方法。
匿名结构体
go
// 临时使用,不用定义类型
user := struct {
Name string
Age int
}{"小明", 25}
fmt.Println(user.Name)