使用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")}在操场上跑。



