1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
|
package main
import (
"fmt"
"time"
)
func main() {
c1 := make(chan string)
c2 := make(chan string)
go func() {
time.Sleep(1e8)
c1 <- "one"
}()
go func() {
time.Sleep(2e8)
c2 <- "two"
}()
for i := 0; i < 2; i++ {
fmt.Println("start for")
select {
case msg1 := <-c1:
fmt.Println("received", msg1)
fmt.Println("finish 1")
case msg2, ok := <-c2:
fmt.Println("received #2", msg2, ok)
}
fmt.Println("end for")
}
fmt.Println("Bye")
}
// Output:
// start for
// received one
// finish 1
// end for
// start for
// received #2 two true
// end for
// Bye
|