这很简单,但我不明白......
我正在尝试设定一个时间。每秒滴答一次...但它每 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/