gpt4 book ai didi

go - 计时器 channel - 在循环内发出标准输出

转载 作者:数据小太阳 更新时间:2023-10-29 03:05:39 25 4
gpt4 key购买 nike

我创建了一个无限循环来打印“诗人”,但没有在控制台中打印任何内容。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com