map - 运行时错误 : assignment to entry in nil map

标签 map go yaml

我正在尝试生成 map ,然后将其转换为 yaml 文件,如下所示:

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

我想我在创建 map 时遗漏了一些重要的东西。我的代码如下。

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

最佳答案

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

关于map - 运行时错误 : assignment to entry in nil map,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27267900/

相关文章:

go - 错误验证递增和重复

docker - 使用临时 docker 容器时,收到此错误消息 ""无法解码 DNS 消息”

go - Viper 在解码时不考虑我的结构中的 yaml 标签

opengl - 一种生成 block 的方法

c# - 使用 linq 查询输出列表/其他数据结构

r - 如何将经纬度网格添加到投影 map ?

pointers - golang 中的 slice 杂耍

amazon-web-services - 如何从另一个模板向现有 SQS QueuePolicy 添加新语句?

kubernetes - 是否可以在内部 Helm chart 的values.yaml中使用全局变量

c++ - 初始化值为 std::vector 的 std::map 的最佳方法是什么?