【发布时间】:2021-08-24 13:22:48
【问题描述】:
我有一个 for 循环,它遍历作为键 (keyString) 的字符串映射和作为值的类型为 Data (sliceValue) 的切片。在那个 for 循环中,我有一个函数 process(),它接受 sliceValue 和 keyString 并对其进行一些操作。
我希望对所有切片并行执行 process 函数。
我提到的代码是这样的:
for keyString, sliceValue := range mapWithKeyStringAndSliceValue {
result, err := process(keyString, sliceValue)
// some other code after this
}
正如我上面提到的,process 函数应该为所有 sliceValues 并行执行。
我查看了这个question 以获得一些想法,但它有一些不同的操作要做。我是频道和例行程序的新手,希望能提供任何帮助!
【问题讨论】:
-
如果您需要同步
result和err,则执行process(...)async 没有优势(实际上是劣势) -
如果您不需要收集结果,只需将循环体放入一个函数(命名或匿名)并作为 goroutine 启动即可。如果您需要等待所有已启动的 goroutine 完成,请使用
WaitGroup。
标签: for-loop go parallel-processing channel goroutine