为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 sync/errgroup 包在 Go 中编写并发 for 循环

如何使用 sync/errgroup 包在 Go 中编写并发 for 循环

Go
桃花长相依 2023-03-15 13:46:11
我想同时对切片的元素执行操作我正在使用sync/errgroup包来处理并发这是 Go Playground 上的最小复制https://go.dev/play/p/yBCiy8UW_80
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

import (

    "fmt"

    "golang.org/x/sync/errgroup"

)


func main() {

    eg := errgroup.Group{}

    input := []int{0, 1, 2}

    output1 := []int{}

    output2 := make([]int, len(input))

    for i, n := range input {

        eg.Go(func() (err error) {

            output1 = append(output1, n+1)

            output2[i] = n + 1

            return nil

        })

    }

    eg.Wait()

    fmt.Printf("with append %+v", output1)

    fmt.Println()

    fmt.Printf("with make %+v", output2)

}

产出


with append [3 3 3]

with make [0 0 3]

与预期相比[1 2 3]


查看完整回答
反对 回复 2023-03-15
  • 1 回答
  • 0 关注
  • 130 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信