我正在玩 Tour of Go 教程中的一个示例。我已将代码编辑如下:
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!")
c, ok := <-boom
fmt.Println(c)
fmt.Println(ok)
default:
fmt.Println(" .")
time.Sleep(50 * time.Millisecond)
}
}
fmt.Println("Finished")
}
但是,代码的输出如下:
.
.
tick.
.
.
tick.
.
.
tick.
.
.
tick.
.
.
tick.
BOOM!
c并且ok永远不会打印,最后一个“完成”也永远不会打印。boom有人可以帮助我了解当我第二次尝试从频道接收时到底发生了什么?
慕标琳琳
相关分类