当前位置: 首页 > 知识库问答 >
问题:

运行时错误:向零映射中的条目赋值

锺离霖
2023-03-14

我正在尝试生成一个地图,然后将其转换为如下的yaml文件:

uid :
      kasi:
        cn: Chaithra
        street: fkmp
      nandan:
        cn: Chaithra
        street: fkmp
      remya:
        cn: Chaithra
        street: fkmp

我想我在创建地图时错过了一些重要的东西。我的代码如下。

package main

import (
    "fmt"
    "gopkg.in/yaml.v2"
)

type T struct {
    cn     string
    street string
}

func main() {
    names := []string{"kasi", "remya", "nandan"}

    m := make(map[string]map[string]T, len(names))
    for _, name := range names {

        //t := T{cn: "Chaithra", street: "fkmp"}

        m["uid"][name] = T{cn: "Chaithra", street: "fkmp"}

    }
    fmt.Println(m)

    y, _ := yaml.Marshal(&m)

    fmt.Println(string(y))
    //fmt.Println(m, names)
}

它给出以下错误:

panic: runtime error: assignment to entry in nil map

共有3个答案

巫墨一
2023-03-14

您定义的映射可能是通过使用变量<code>varm map〔string〕接口{}</code>

相反,使用m:=make(map[string]接口{})来避免相应的错误

卫增
2023-03-14

您应该检查map是否为nil,如果在for循环中为nil,则初始化map:

if m["uid"] == nil {
    m["uid"] = map[string]T{}
}
蒋英博
2023-03-14

您还没有初始化您的内部映射。在for循环之前,您可以添加m["uid"]=make(map[string]T),然后分配名称。

 类似资料:
  • 问题内容: 我正在尝试生成地图,然后将其转换为yaml文件,如下所示: 我想我在创建地图时缺少一些重要的东西。我的代码如下。 它给出了以下错误: 问题答案: 您尚未初始化内部地图。在for循环之前,您可以添加然后分配名称。

  • 问题内容: 我正在尝试创建地图片段。尽管代码可以很好地编译,但在下面出现运行时错误: 我尝试制作一个Map数组,每个Map包含两个索引,即“ Id”和“ Investor”。我的代码如下所示: 我最初认为类似下面的内容会起作用,但是也无法解决问题。有任何想法吗? 问题答案: 您正在试图建立一个 切片 地图; 考虑以下示例: http://play.golang.org/p/gChfTgtmN- 您

  • 概述:最初,我对这个程序的预期目的是制作一个Treemap来读取文本文档,特别是找到所有单词和单词所在的索引/行。现在我想列出一个“十大”名单,其中包含使用最多的单词。我想“翻转”我的树状图,这样整型值将是按顺序排列的,然后是字符串

  • 但这不是有效的语法。 我是否必须分别检查每一个密钥才能处理无的情况?

  • 我有两个需要映射的继承层次结构。一个层次结构是国内的,另一个是野生的。我有抽象的Domestic动物和具体的DomesticCat和DomesticDog扩展它。在第二个层次结构中,我有抽象的Wild动物和具体的WildCat和WildDog扩展它。我还有另外两个类,分别是WildAnimalFeeder具有Wild动物的成员对象和DomesticAnimalFeeder具有DomesticAni

  • 问题内容: 我有一个带有复合键的实体,因此我使用@Embeddable和@EmbeddedId批注。可嵌入类如下所示: 以及使用它的实体: 现在,我想将该实体映射到另一个这样的实体中: 注意 的mappedBy =“id.admin” 是指 管理 字段中 DitaAdminAccountSkillPK 使用 ID 的字段 DitaAdminAccountSkill 。 这样可以编译运行。但是,在e