H5W3
当前位置:H5W3 > go > 正文

【go】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)

回答

result := make(map[string]string)

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

//...

}

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

本文地址:H5W3 » 【go】go语言中在goroutine函数中使用map为何报panic: assignment to entry in nil map

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址