首页 > 后端开发 > Golang > Go中切片初始化时出现'Assignment to Entry in Nil Map Error”如何解决?

Go中切片初始化时出现'Assignment to Entry in Nil Map Error”如何解决?

Linda Hamilton
发布: 2024-11-05 11:37:02
原创
565 人浏览过

How to Resolve the

切片初始化期间对 Nil 映射条目的分配错误

分配给切片内的 nil 映射条目时会发生此运行时错误。在提供的代码中,错误源于尝试创建地图切片。

要纠正此问题,应修改方法如下:

<code class="go">type Investor struct {
    Id   string
    Name string
}

var invs []Investor

for _, row := range rows {
    var inv_ids []string
    var inv_names []string

    // Create arrays of data from MySQL GROUP_CONCAT function
    inv_ids = strings.Split(row.Str(10), ",")
    inv_names = strings.Split(row.Str(11), ",")

    // Build slice of investors
    for i := 0; i < len(inv_ids); i++ {
        invs = append(invs, Investor{inv_ids[i], inv_names[i]})
    }
}</code>
登录后复制

这里,我们定义一个自定义的 Investor 结构来表示每个地图条目。然后,我们将 invs 初始​​化为 Investor 结构的一部分,并将其填充到循环中。这种方法避免使用 nil 映射并确保值的正确分配。

提供的答案中提供的替代选项涉及使用复合文字直接在切片内初始化映射。这可以通过以下方式实现:

<code class="go">var invs []map[string]string

for _, row := range rows {
    var inv_ids []string
    var inv_names []string

    // Create arrays of data from MySQL GROUP_CONCAT function
    inv_ids = strings.Split(row.Str(10), ",")
    inv_names = strings.Split(row.Str(11), ",")

    // Build slice of maps
    for i := 0; i < len(inv_ids); i++ {
        invs = append(invs, map[string]string{"Id": inv_ids[i], "Investor": inv_names[i]})
    }
}</code>
登录后复制

以上是Go中切片初始化时出现'Assignment to Entry in Nil Map Error”如何解决?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板