登录
首页 >  Golang >  Go问答

Go中如何实现并行运行for循环内的方法?

来源:stackoverflow

时间:2024-02-11 14:45:21 152浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《Go中如何实现并行运行for循环内的方法?》,本文主要会讲到等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

我有一个 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 并行执行。

我查看了这个问题以获得一些想法,但它有一些不同的操作要做。我是频道和 go 例程的新手,希望得到任何帮助!


正确答案


使用 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()

本篇关于《Go中如何实现并行运行for循环内的方法?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>