我是 Golang 的新手,我很难弄清楚为什么下面的代码会产生死锁。另外,我该如何修复它才能正常工作?
package main
import "fmt"
func main() {
m := make(map[int]chan string)
go func() {
m[0] = make(chan string)
m[0] <- "abab"
}()
fmt.Println(<-m[0])
}
编辑:
感谢您的回答!m[0]不幸的是,初始化
m[0] = make(chan string)
在启动一个新的 goroutine 之前并不是我想要的。我的问题是:有没有办法“动态”创建频道?例如,我有一个m类型的地图,map[int]chan string我收到包含类似id类型的请求int。我想通过 channel 发送消息map[id],但是为每个通道初始化通道int成本太高。我该如何解决/解决这个问题?
因此,换句话说,我想为每个队列创建一个单独的作业队列,id并懒惰地初始化每个队列。
叮当猫咪
慕村225694
相关分类