gpt4 book ai didi

go - 为什么 'tick := time.Tick(time.Second)' 每 2 秒滴答一次而不是 1 秒

转载 作者:行者123 更新时间:2023-12-03 10:06:44 28 4
gpt4 key购买 nike

这很简单,但我不明白......

我正在尝试设定一个时间。每秒滴答一次...但它每 2 秒滴答一次?!?

package main

import (
"fmt"
"time"
)

func main() {
fmt.Println("Hello, playground")

iterationIndex := 0
tick := time.Tick(time.Second)
done := make(chan bool, 1)

for _ = range tick {
select {
case <-tick:
iterationIndex++
if iterationIndex >= 10{
done <- true
}
fmt.Printf("%s\n", time.Now().Format("15:04:05.000000"))
case <-done:
return
}
}
}

前往 Playground 的链接 https://play.golang.org/p/WKhnNK2BRpd

最佳答案

这是错误所在:

for _ = range tick {
select {
case <-tick:

发生的情况是,您通过 for _ = range tick 打勾,然后再勾选 select { case <-tick: 。并且您始终记录第二个刻度。

要记录每个价格变动,您需要执行以下操作:

for {
select {
case <-tick:
iterationIndex++
if iterationIndex >= 10{
done <- true
}
fmt.Printf("%s\n", time.Now().Format("15:04:05.000000"))
case <-done:
return
}
}

在这里您可以处理并记录每个刻度。

编辑:

如果您确实想使用 for ... range相反,您可以执行以下操作:

for _ = range tick{
if iterationIndex >= 10{
break
}
iterationIndex++

fmt.Printf("%s\n", time.Now().Format("15:04:05.000000"))
}

关于go - 为什么 'tick := time.Tick(time.Second)' 每 2 秒滴答一次而不是 1 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64995669/

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