當 select
中的其他條件分支都沒有准備好的時候,`default` 分支會被執行。
為了非阻塞的發送或者接收,可使用 default
分支:
select { case i := <-c: // 使用 i default: // 從 c 讀取會阻塞 }
--------------------
package main
import (
"fmt"
"time"
)
func main() {
tick := time.Tick(100 * time.Millisecond)
boom := time.After(500 * time.Millisecond)
for {
select {
case <-tick:
fmt.Println("tick.")
case <-boom:
fmt.Println("BOOM!")
return
default:
fmt.Println(" .")
time.Sleep(50 * time.Millisecond)
}
}
}