select에서 default 값이 준비되지 않았을 때 실행됩니다. 다른 언어의 switch구문과 매우 유사합니다.
select {
case i := <-c:
// use i
default:
// c로부터 값을 받아오는 것이 block된 경우
}
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)
}
}
}
package main
import (
"fmt"
"time"
)
func main() {
tick := time.Tick(100 * time.Millisecond)
boom := time.After(500 * time.Millisecond)
for {
select {
case c := <-tick:
fmt.Println(c, "tick.")
case d := <-boom:
fmt.Println(d, "BOOM!")
return
default:
fmt.Println(" .")
time.Sleep(50 * time.Millisecond)
}
}
}