github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/bestpractices/concurrency1.go (about) 1 // +build ignore,OMIT 2 3 package main 4 5 import ( 6 "errors" 7 "fmt" 8 "time" 9 ) 10 11 // START OMIT 12 func doConcurrently(job string, err chan error) { 13 go func() { 14 fmt.Println("doing job", job) 15 time.Sleep(1 * time.Second) 16 err <- errors.New("something went wrong!") 17 }() 18 } 19 20 func main() { 21 jobs := []string{"one", "two", "three"} 22 23 errc := make(chan error) 24 for _, job := range jobs { 25 doConcurrently(job, errc) 26 } 27 for _ = range jobs { 28 if err := <-errc; err != nil { 29 fmt.Println(err) 30 } 31 } 32 } 33 34 // END OMIT