我的代码段:
主要工人:
func Workergrab(m map[int][][]string, ch chan [][]string, wg *sync.WaitGroup) {
for y := 1993; y <= 2014; y++ {
ch <- m[y]
}
wg.Done()
}
工作1:
fmt.Println(<-ch)
好的,这就是我想做的
-> Main-Worker grabbing map data from m[y] and send it over to channel
-> Worker1 do get data from channel that main worker send at same time depend on y
我已经试过了,工作人员1只给我看m[1993]的数据混乱
我想知道使用地图频道,但不确定如何制作地图频道。我觉得频道搞砸了。。。,我想知道我该怎么做map[int][][]字符串,因此我的worker1将从每个ID的通道捕获数据";1993"1994";等等。
运行代码会引发all goroutines are asleep - deadlock!
错误;这意味着两个goroutine都结束了,或者永远等待在写作/阅读部分。
Workergrab
试图向ch
通道发送多个值,但Worker1
仅打印一个ch
值并完成其工作。因此,将Worker1
更改为以下内容可以解决问题:
func Worker1(ch chan [][]string) {
for {
fmt.Println(<-ch)
}
}