github.com/goplus/gop@v1.2.6/printer/_testdata/35-Chan-select/select.gop (about)

     1  var done = make(chan bool, 1)
     2  var exited = make(chan bool, 1)
     3  
     4  func consume(xchg chan int) {
     5  	for {
     6  		select {
     7  		case c := <-xchg:
     8  			println(c)
     9  		case <-done:
    10  			println("done!")
    11  			exited <- true
    12  			return
    13  		}
    14  	}
    15  }
    16  
    17  func product(xchg chan int, from chan int) {
    18  	for x <- from {
    19  		xchg <- x
    20  	}
    21  	done <- true
    22  }
    23  
    24  from := make(chan int, 10)
    25  xchg := make(chan int, 1)
    26  go consume(xchg)
    27  go product(xchg, from)
    28  for i := 1; i <= 10; i++ {
    29  	from <- i
    30  }
    31  close(from)
    32  <-exited