Provide synchronization, error propagation, and Context cancelation for groups of goroutines working on subtasks of a common task. This package highly inspired by errgroup.
Go 1.15
go get github.com/hlts2/errgroup
package main
import (
"fmt"
"net/http"
"github.com/hlts2/errgroup"
)
func main() {
var urls = []string{
"http://www.golang.org/",
"http://www.google.com/",
"http://www.somestupidname.com/",
}
eg := new(errgroup.Group)
for _, url := range urls {
url := url
eg.Go(func() error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
return nil
})
}
err := eg.Wait()
if err != nil {
if err, ok := err.(errgroup.Error); ok {
fmt.Println(err.Errors()) // slice of errors that occurred inside eg.Go
}
} else {
fmt.Println("Successfully fetched all URLs.")
}
}
- Fork it ( https://github.com/hlts2/errgroup/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request