Go 无法分配给结构字段/分配给nil映射中的条目
有人知道为什么这样不行吗 我绞尽脑汁已经有4个小时了。我不能让它工作 在我看来,我正试图做同样的事情两次。我在一个结构中绘制一个字段的映射,然后在另一个不同结构中的另一个字段上再次绘制 如果我试着做地图。它失败的原因是:“无法分配给struct field.Bet.Events[“一”]。地图中的跑步者” 因此,如果我删除make,并尝试分配它,我会得到:“分配到nil映射中的条目”Go 无法分配给结构字段/分配给nil映射中的条目,go,Go,有人知道为什么这样不行吗 我绞尽脑汁已经有4个小时了。我不能让它工作 在我看来,我正试图做同样的事情两次。我在一个结构中绘制一个字段的映射,然后在另一个不同结构中的另一个字段上再次绘制 如果我试着做地图。它失败的原因是:“无法分配给struct field.Bet.Events[“一”]。地图中的跑步者” 因此,如果我删除make,并尝试分配它,我会得到:“分配到nil映射中的条目” map的默认值为nil(make(map)之前或不之前) 在此代码中,您为运行者设置了默认值: Bet.Eve
map的默认值为
nil
(make(map)之前或不之前)
在此代码中,您为运行者设置了默认值:
Bet.Events["one"] = Event{
Name: "first",
}
因此,Runners
没有明确定义,设置为nil
除了映射元素外,结构是可变的。
无法重新初始化映射元素Bet.Events[“one”]
,因为它不可寻址
您需要执行以下操作:
Bet.Events["one"] = Event{
Name: "first",
Runners: make(map[int]Runner),
}
感谢@icza在文本中标记错误地图的默认值为
nil
(在make(地图)之前或之后)
在此代码中,您为运行者设置了默认值:
Bet.Events["one"] = Event{
Name: "first",
}
因此,Runners
没有明确定义,设置为nil
除了映射元素外,结构是可变的。
无法重新初始化映射元素Bet.Events[“one”]
,因为它不可寻址
您需要执行以下操作:
Bet.Events["one"] = Event{
Name: "first",
Runners: make(map[int]Runner),
}
感谢@icza在文本中标记错误非常感谢您的回答,特别是解释。我觉得我现在更明白了。没有意识到结构是不可变的。“结构的默认值是
nil
”错误nil
甚至不是struts的有效值。“结构是不可修改的”错误。结构是可修改的。地图中存储的值是不可修改的,因为地图中存储的值是不可寻址的。icza非常感谢。你是对的!非常感谢你的回答,尤其是解释。我觉得我现在更明白了。没有意识到结构是不可变的。“结构的默认值是nil
”错误nil
甚至不是struts的有效值。“结构是不可修改的”错误。结构是可修改的。地图中存储的值是不可修改的,因为地图中存储的值是不可寻址的。icza非常感谢。你是对的!存储在映射中的值不可寻址,您无法更改它们。您只能重新分配它们。两个哈希/关联数组只实现了三个操作:添加键值、删除键值和获取键值。它没有重新分配操作。这样的概念。存储在映射中的值是不可寻址的,您不能更改它们。您只能重新分配它们。两个哈希/关联数组只实现了三个操作:添加键值、删除键值和获取键值。它没有重新分配操作。这样的概念。