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