go并发小工具errgroup
Posted 柳清风09
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go并发小工具errgroup相关的知识,希望对你有一定的参考价值。
先看demo
package main
import (
"fmt"
"golang.org/x/sync/errgroup"
"net/http"
)
func main()
var g errgroup.Group
var urls = []string
"http://www.golang.org/",
"http://www.xxxzzzzzzxxxx.com",
"http://www.google.com/",
for i := range urls
url := urls[i]
g.Go(func() error
resp, err := http.Get(url)
if err == nil
resp.Body.Close()
fmt.Println(url)
return err
)
if err := g.Wait(); err != nil
fmt.Printf("error %v", err)
return
fmt.Println("Successfully fetched all URLs.")
这里有个小问题大家需要注意,g.Wait 返回的只有一个错误,也就是指返回第一个错误,如果请求中有多个报错将会被忽略。
所以如果你需要获取每个报错,我还是建议你使用 waitgroup的方式。
以上是关于go并发小工具errgroup的主要内容,如果未能解决你的问题,请参考以下文章