Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 无法分配给结构字段/分配给nil映射中的条目_Go - Fatal编程技术网

Go 无法分配给结构字段/分配给nil映射中的条目

Go 无法分配给结构字段/分配给nil映射中的条目,go,Go,有人知道为什么这样不行吗 我绞尽脑汁已经有4个小时了。我不能让它工作 在我看来,我正试图做同样的事情两次。我在一个结构中绘制一个字段的映射,然后在另一个不同结构中的另一个字段上再次绘制 如果我试着做地图。它失败的原因是:“无法分配给struct field.Bet.Events[“一”]。地图中的跑步者” 因此,如果我删除make,并尝试分配它,我会得到:“分配到nil映射中的条目” map的默认值为nil(make(map)之前或不之前) 在此代码中,您为运行者设置了默认值: Bet.Eve

有人知道为什么这样不行吗

我绞尽脑汁已经有4个小时了。我不能让它工作

在我看来,我正试图做同样的事情两次。我在一个结构中绘制一个字段的映射,然后在另一个不同结构中的另一个字段上再次绘制

如果我试着做地图。它失败的原因是:“无法分配给struct field.Bet.Events[“一”]。地图中的跑步者”

因此,如果我删除make,并尝试分配它,我会得到:“分配到nil映射中的条目”


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非常感谢。你是对的!存储在映射中的值不可寻址,您无法更改它们。您只能重新分配它们。两个哈希/关联数组只实现了三个操作:添加键值、删除键值和获取键值。它没有重新分配操作。这样的概念。存储在映射中的值是不可寻址的,您不能更改它们。您只能重新分配它们。两个哈希/关联数组只实现了三个操作:添加键值、删除键值和获取键值。它没有重新分配操作。这样的概念。