diff --git a/examples/select/select.go b/examples/select/select.go index 5c0d961..81be4d6 100644 --- a/examples/select/select.go +++ b/examples/select/select.go @@ -13,13 +13,9 @@ func main() { c1 := make(chan string) c2 := make(chan string) - // This third channel will indicate when we're done - // and can exit the program. - d := make(chan bool, 1) - - // The first two channels will receive a value after - // some amount of time, to simulate e.g. blocking RPC - // operations executing in concurrent goroutines. + // Each channel will receive a value after some amount + // of time, to simulate e.g. blocking RPC operations + // executing in concurrent goroutines. go func() { time.Sleep(time.Second * 1) c1 <- "one" @@ -31,22 +27,12 @@ func main() { // We'll use `select` to await both of these values // simultaneously, printing each one as it arrives. - // Once we've received both, we'll send a value to the - // `d` channel indicating that we're ready to proceed. - go func() { - for i := 0; i < 2; i++ { - select { - case msg1 := <-c1: - fmt.Println("received", msg1) - case msg2 := <-c2: - fmt.Println("received", msg2) - } + for i := 0; i < 2; i++ { + select { + case msg1 := <-c1: + fmt.Println("received", msg1) + case msg2 := <-c2: + fmt.Println("received", msg2) } - d <- true - }() - - // Since all other code is running in concurrent - // goroutines, we'll executing a blocking receive - // here to await completion of our example. - <-d + } }