github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/talks/2013/bestpractices/concurrency2.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 do(job string) error { 13 fmt.Println("doing job", job) 14 time.Sleep(1 * time.Second) 15 return errors.New("something went wrong!") 16 } 17 18 func main() { 19 jobs := []string{"one", "two", "three"} 20 21 errc := make(chan error) 22 for _, job := range jobs { 23 go func(job string) { 24 errc <- do(job) 25 }(job) 26 } 27 for _ = range jobs { 28 if err := <-errc; err != nil { 29 fmt.Println(err) 30 } 31 } 32 } 33 34 // END OMIT