运行时错误:“Assignment to Entry in Nil Map”已解决
当尝试创建 Map 切片时,您可能会遇到运行时错误“分配给 nil 映射中的条目”。此错误表明您正在尝试访问 nil Map 值,这是不允许的。
问题陈述
您在构建 Map 数组时遇到此错误,每个包含两个键:“Id”和“Investor”。尝试的代码如下:
<code class="go">for _, row := range rows { invs := make([]map[string]string, length) for i := 0; i < length; i++ { invs[i] = make(map[string]string) invs[i]["Id"] = inv_ids[i] invs[i]["Investor"] = inv_names[i] } }</code>
解决方案
要解决此错误,您应该直接在循环中创建一个 Maps 切片,而不是创建 nil Maps并为它们赋值。这可以使用复合文字来实现:
<code class="go">for _, row := range rows { invs := make([]map[string]string, length) for i := 0; i < length; i++ { invs[i] = map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]} } }</code>
替代方法
或者,您可以使用结构体来表示投资者:
<code class="go">type Investor struct { Id int Investor string } for _, row := range rows { invs := make([]Investor, length) for i := 0; i < length; i++ { invs[i] = Investor{ Id: inv_ids[i], Investor: inv_names[i], } } }</code>
使用结构可以提供更清晰、更结构化的数据表示。
以上是在 Go 中创建映射切片时如何修复“Assignment to Entry in Nil Map”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!