Go - Select & Concurrency Patterns
Beginner 10/10
Teacher 10/10
Architect 10/10
select
select{
case v := <-ch1:
fmt.Println(v)
case <-time.After(time.Second):
fmt.Println("timeout")
}
Worker Pool
jobs := make(chan int)
wg := &sync.WaitGroup{}
for i := 0; i < 4; i++ {
wg.Add(1)
go func(){ defer wg.Done(); for j := range jobs { _ = j } }()
}
for j := 0; j < 10; j++ { jobs <- j }
close(jobs)
wg.Wait()