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