如何使用WaitGroup处理错误并终止Goroutine

如何使用WaitGroup处理错误并终止Goroutine,第1张

如何使用WaitGroup处理错误终止Goroutine

使用golang.org/x/sync/errgroup等待并处理goroutine中的错误。

package mainimport (    "errors"    "log"    "sync"    "golang.org/x/sync/errgroup")var waitGroup sync.WaitGroupfunc main() {    c := make(chan int, 10)    var g errgroup.Group    g.Go(func() error {        return doSomething(c)    })    // g.Wait waits for all goroutines to complete    // and returns the first non-nil error returned    // by one of the goroutines.    if err := g.Wait(); err != nil {        log.Fatal(err)    }}func doSomething(c chan int) error {    defer close(c)    for i := 0; i < 10; i++ {        n, err := someFunctionThatCanError()        if err != nil { return err        }        c <- n    }    return nil}func someFunctionThatCanError() (int, error) {    return 1, errors.New("an error")}

在 *** 场上跑。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4930137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-12

发表评论

登录后才能评论

评论列表(0条)

    保存