package main import ( "fmt" "time" ) func goRoutineA(a chan int) { a<-1 } func main() { ch := make(chan int) go goRoutineA(ch) time.Sleep(time.Second*1) select{ case d := <- ch: fmt.Println(d) default: fmt.Println("aaa") } fmt.Println("will exit.."); }
当注释掉 15行的 time.Sleep(time.Second*1 )时, 则会输出 “aaa”.
因为此时, ch这个channel还没有就绪!!