如何让每个worker都使用Map Channel?

How to make each worker work with Map Channel?

我的代码片段:

主要工人:

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

上面我已经试过了,worker1只给我m[1993]的数据。 一团糟

我想知道使用贴图通道,但不确定如何制作贴图通道。 我认为频道的事情搞砸了......, 我想知道如何制作频道 map[int][][]string 所以我的 worker1 将从每个 ID“1993”、“1994”等的通道捕获数据...

运行 您的代码抛出 all goroutines are asleep - deadlock! 错误;这意味着两个 goroutine 都已结束或永远等待 writing/reading 部分。

Workergrab 尝试向 ch 通道发送多个值,但 Worker1 仅打印一个 ch 值并完成其工作。所以把Worker1改成下面这样就可以解决问题:

func Worker1(ch chan [][]string) {
    for {
        fmt.Println(<-ch)
    }
}