go语言中在goroutine函数中使用map为何报panic: assignment to entry in nil map

我在另一个goroutine中会不断地将结果数据丢入resultQueue中,然后我另外起一个goroutine把这个resultQueue中的结果转换为一个map输出,请问一下为什么这个代码在调用的时候会报panic: assignment to entry in nil map

resultQueue := make(chan string)

var result map[string]string

go func(resultQueue chan string, result map[string]string) {
    for urlInfo := range resultQueue {
        ret := strings.Split(urlInfo, " ")
        result[ret[0]] = ret[1]
    }
}(resultQueue, result)
阅读 30.5k
3 个回答

result := make(map[string]string)

1.map得初始化才能使用;
2.建议使用:
for urlInfo,err := range resultQueue {

//...

}

因为没有初始化,map不像array和基础类型在你定义就会给你初始化一个默认值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题