首页  >  文章  >  后端开发  >  在 Go 中创建映射切片时如何修复“Assignment to Entry in Nil Map”错误?

在 Go 中创建映射切片时如何修复“Assignment to Entry in Nil Map”错误?

Linda Hamilton
Linda Hamilton原创
2024-11-04 14:59:12716浏览

How to Fix

运行时错误:“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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn