我是 Golang 的新手,但正在努力理解这种伟大的语言!请帮我解决这个..
我有2个香奈儿。“输入”和“输出”通道
in, out := make(chan Work), make(chan Work)
我设置了在 chanel 中监听的 goroutines 工人,抓住工作并去做。我有一些工作,我会发送到香奈儿。
当工作由工人完成时,它会写入 Out 通道。
func worker(in <-chan Work, out chan<- Work, wg *sync.WaitGroup) {
for w := range in {
// do some work with the Work
time.Sleep(time.Duration(w.Z))
out <- w
}
wg.Done()
}
完成所有工作后,我会在编写程序时关闭两个通道。
现在我想在 OUT chanel 中写完成工作的结果,但在某些部分将所有内容分开,例如,如果工作类型是这样的:
type Work struct {
Date string
WorkType string
Filters []Filter
}
如果 WorkType 是“firstType”,我想将完成的工作发送到一个 chanel,如果 WorkType 是“secondType”到第二个 chan...但可能有 20 多种类型的工作..如何更好地解决这种情况道路?
我可以在 chanel OUT 中设置 chanels 并从该子 chanels 中获取数据吗?
ps:请原谅我的菜鸟问题,请..
墨色风雨
相关分类