goroutine_select.go 372 B

123456789101112131415161718192021222324252627282930
  1. // Q20b_goroutine.go
  2. package main
  3. import (
  4. "fmt"
  5. "os"
  6. )
  7. func tel(ch chan int, quit chan bool) {
  8. for i := 0; i < 15; i++ {
  9. ch <- i
  10. }
  11. quit <- true
  12. }
  13. func main() {
  14. var ok = true
  15. ch := make(chan int)
  16. quit := make(chan bool)
  17. go tel(ch, quit)
  18. for ok {
  19. select {
  20. case i := <-ch:
  21. fmt.Printf("The counter is at %d\n", i)
  22. case <-quit:
  23. os.Exit(0)
  24. }
  25. }
  26. }