【发布时间】:2016-02-13 11:40:07
【问题描述】:
当尝试在下面的代码中为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 不执行(因为错误发生在之前的留置权上)。
有一些 goroutine 正在向通道发送数据,receiveWork 方法应该像这样制作地图:
map =>
"typeOne" =>
[
ChartElement,
ChartElement,
ChartElement,
],
"typeTwo" =>
[
ChartElement,
ChartElement,
ChartElement,
]
请帮我修复错误。
【问题讨论】:
-
看起来您的频道传递到
receiveWork永远不会关闭。您需要确保它关闭才能结束 for 循环。 -
它结束了,在 main 函数中,当所有 goroutines 完成他们的工作,并且写入到 out 通道完成。
标签: go runtime-error goroutine