我创建了一个无限循环来打印“诗人”,但没有在控制台中打印任何内容。
func main() {
t := time.NewTimer(1 * time.Minute)
for {
k:=<-t.C
fmt.Print("%T",k)
fmt.Println("poet")
}
}
不知何故,当我删除下面两行时,程序运行正常
k:=<-t.C
fmt.Print("%T",k)
我是 Golang 的新手,请帮助我了解导致此问题的原因。谢谢
最佳答案
Timer 类型表示一个单个事件,
所以当它发生在这里
<强> k:=<-t.C
你遇到了死锁 - 因为所有的 go-routines 都在 sleep ,你永远不会在循环内获得另一个时间值。
以下是使用 Timer 的示例,也许您想改用 Ticker?
func main() {
timer := time.NewTimer(time.Second * 2)
<- timer.C
println("Timer expired")
}
关于go - 计时器 channel - 在循环内发出标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40282024/