我是 Golang 的新手 - 在尝试将以下内容重写为单线程实现时。.....run := func(handler func(chan<- modify), threads int) <-chan modify { result := make(chan modify) go func() { var wg sync.WaitGroup for i := 0; i < threads; i++ { wg.Add(1) go func() { defer wg.Done() handler(result) }() } wg.Wait() close(result) }() return result}modifyAgg := run(func(result chan<- modify) {aggre := run(func(result chan<- modify) { u.addAgg(slices, result) // returns result channel}, u.threads.GrpTxns).... 在上面的代码中,变量 addAgg 的类型是 chan<- modify。以下不是 - 在遍历变量 aggre 时出现错误“无法遍及 addAgg(类型 func())”aggre := func() { result:= make(chan modify) defer close(result) u.addAgg(slices, result) // returns result channel}如何更改第二个实现以模仿第一个?谢谢 !
1 回答
斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
我能够在单线程中实现这个......
aggre := func() <-chan modify{
result:= make(chan modify, 50) // make it non blocking
u.addAgg(slices, result)
defer close(result)
return result
}()
- 1 回答
- 0 关注
- 85 浏览
添加回答
举报
0/150
提交
取消