如何在go中并行运行一个for循环内的方法?

How to run a method inside for loop in parallel in go?

我有一个 for 循环,它迭代一个字符串映射作为键 (keyString) 和一个类型 Data (sliceValue) 的切片作为值。在那个 for 循环中,我有一个函数 process() 接受 sliceValuekeyString 并对其进行一些操作。

我希望 process 函数对所有切片并行执行。

我说的代码是这样的:

for keyString, sliceValue := range mapWithKeyStringAndSliceValue {
     result, err := process(keyString, sliceValue)
     // some other code after this
}

正如我上面提到的,process 函数应该对所有 sliceValues 并行执行。

我查看了这个 question 以了解一些想法,但它有一些不同的操作要做。我是 channel 和 go routines 的新手,非常感谢任何帮助!

使用sync.WaitGroup并在go func的循环内进行处理。

    wg := new(sync.WaitGroup)
    for keyString, sliceValue := range mapWithKeyStringAndSliceValue {
        wg.Add(1)
        // put your sliceValue type instead of interface{}
        go func(keyString string, sliceValue interface{}, wg *sync.WaitGroup) {
            defer wg.Done()
            result, err := process(keyString, sliceValue)
            // some other code after this
        }(keyString, sliceValue, wg)
    }
    
    wg.Wait()