Go : 分配到 nil 地图中的条目

在下面的代码中尝试将值设置为map( countedData) 时,我收到一个错误消息,指出assignment to entry in nil map.


func receiveWork(out <-chan Work) map[string][]ChartElement {


    var countedData map[string][]ChartElement


    for el := range out {

        countedData[el.Name] = el.Data

    }

    fmt.Println("This is never executed !!!")


    return countedData

}

Println 不执行(因为在此之前错误发生在留置权上)。


有一些 goroutines 将数据发送到通道,receiveWork方法应该制作这样的地图:


map =>

    "typeOne" => 

       [

         ChartElement,

         ChartElement,

         ChartElement,

       ],

    "typeTwo" => 

       [

         ChartElement,

         ChartElement,

         ChartElement,

       ]

请帮我修复错误。


烙印99
浏览 201回答 2
2回答

神不在的星期二

使用内置函数 make 创建一个新的空映射值,该函数将映射类型和可选的容量提示作为参数:make(map[string]int) make(map[string]int,&nbsp;100)初始容量不限制其大小:地图增长以容纳存储在其中的项目数量,除了 nil 地图。一个 nil 映射相当于一个空映射,只是不能添加任何元素。你写:var&nbsp;countedData&nbsp;map[string][]ChartElement相反,要初始化地图,请写入,countedData&nbsp;:=&nbsp;make(map[string][]ChartElement)

30秒到达战场

另一种选择是使用复合文字:countedData&nbsp;:=&nbsp;map[string][]ChartElement{}https://golang.org/ref/spec#Composite_literals
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go