有谁知道为什么这不起作用?我现在已经绞尽脑汁大约 4 个小时了。我无法让它工作。在我看来,我正在尝试做同样的事情两次。我在一个结构中制作一个字段的地图,然后我在另一个结构中的另一个字段上再次这样做。如果我尝试制作地图。它失败了:“无法分配给结构字段。Bet.Events [“one”]。地图中的跑步者”。因此,如果我删除 make,并尝试分配它,我会得到:“分配给 nil 映射中的条目”https://play.golang.org/p/kRcXoyO-8FNvar Bet BetStructtype BetStruct struct { Events map[string]Event}type Event struct { Name string Runners map[int]Runner}type Runner struct { Name string}func main(){ // == THIS WORKS FINE == Bet.Events = make(map[string]Event) Bet.Events["one"] = Event{ Name: "first", } Bet.Events["two"] = Event{ Name: "second", } // == THIS DOES NOT WORK == Bet.Events["one"].Runners = make(map[int]Runner) Bet.Events["one"].Runners[0] = Runner{ Name: "Jeff", }}
1 回答
梵蒂冈之花
TA贡献1900条经验 获得超5个赞
map 的默认值是nil(之前或没有 make(map))
您在此代码中设置了默认值Runners:
Bet.Events["one"] = Event{
Name: "first",
}
因此,Runners没有明确定义并设置为nil.
结构是可变的,除了映射元素。(您无法重新初始化地图
元素Bet.Events["one"],因为它不可寻址。
你需要做:
Bet.Events["one"] = Event{
Name: "first",
Runners: make(map[int]Runner),
}
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报
0/150
提交
取消