切片初始化期间对 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中文网其他相关文章!