一、 引言:当结构体玩起了“套娃”
想象一下这个场景:你要定义一个“游戏玩家”的结构体。一个玩家有ID和Name,这很简单。但他还有一个装备,装备呢,又包含了武器和盔甲。武器还有名称和攻击力,盔甲还有名称和防御力……
用代码表示,就是这样一层套一层的“套娃”:
type Weapon struct {
Name string
AttackPower int
}
type Armor struct {
Name string
DefensePower int
}
type Equipment struct {
Weapon Weapon
Armor Armor
}
type Player struct {
ID int
Name string
Eq Equipment // 嵌套了Equipment结构体
}
好了,问题来了。现在你要创建一个新的玩家,比如叫“冒险家小明”,给他配上一把“屠龙宝刀”和一件“荆棘铠甲”。如果你直接用字面量初始化,代码会写成什么样?
“地狱级”初始化体验:
func main() {
// 头皮发麻的初始化方式
player := Player{
ID: 1,
Name: "冒险家小明",
Eq: Equipment{
Weapon: Weapon{
Name: "屠龙宝刀",
AttackPower: 888,
},
Armor: Armor{
Name: "荆棘铠甲",
DefensePower: 500,
},
},
}
fmt.Printf("%+v\n", player)
}
我的天!这一层又一层的大括号,看得人眼花缭乱。这还只是两层嵌套,要是业务再复杂点,比如玩家再属于一个<

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



