gpt4 book ai didi

go - 如何摆脱时间。 sleep

转载 作者:IT王子 更新时间:2023-10-29 01:51:39 24 4
gpt4 key购买 nike

我几天前才开始接触 Golang,但我似乎无法摆脱时间。Sleep()...

我可以返回/跳出 for 循环,但函数不会返回,因为 Sleep 继续执行它的操作。

我猜解决方案很简单,但我似乎找不到答案。

func main() {
ticker := time.NewTicker(time.Second * 1)

go func() {
for i := range ticker.C {
fmt.Println("tick", i)
ticker.Stop()
break
}
}()
time.Sleep(time.Second * 10)
ticker.Stop()

fmt.Println("Hello, playground")
}

提前致谢!

最佳答案

听起来您想向主 goroutine 发送一条消息,告诉它您的另一个 goroutine 已完成。为此, channel 是最好的方式。

func main() {
ticker := time.NewTicker(time.Second)
done := make(chan bool, 1)

go func() {
for i := range ticker.C {
fmt.Println("tick", i)
ticker.Stop()
break
}

done <- true
}()

timer := time.NewTimer(time.Second/2)
select {
case <-done:
timer.Stop()
case <-timer.C:
ticker.Stop()
}

fmt.Println("Done")
}

工作示例 http://play.golang.org/p/5NFsvC5f7P

当计时器大于 ticker 时,它开始计时。当小于时,您看到的都是“完成”。

关于go - 如何摆脱时间。 sleep ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306977/

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