我是 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 關注
- 120 瀏覽
添加回答
舉報
0/150
提交
取消