猿问

Go lang,不明白这段代码的作用

我是golang菜鸟,但我想更改一个每分钟每秒将数据写入数据库的源代码。我很难找到 Tick 在代码中的作用。config.SampleRate 为整数 = 1,这意味着每分钟 = 每 60 秒


这个勾号是关于什么的以及它的结尾部分:<-勾号,与计数器 i 结合?


i := 0


tick := time.Tick(time.Duration(1000/config.Samplerate) * time.Millisecond)


for {

    // Restart the accumulator loop every 60 seconds.

    if i > (60*config.Samplerate - 1) {

        i = 0

        //some code here

    }


    //some code there


    }

    <-tick

    i++


明月笑刀无情
浏览 92回答 1
1回答

FFIVE

tick是 Go 中的一个通道。如果您查看文档,tick应该每个时间间隔向通道发送一次内容,这是在time.Duration(1000/config.Samplerate) * time.Millisecond您的代码中指定的。<-tick只需等待该时间间隔过去。i跟踪过去了多少秒,因此每次滴答时,您都将加一i。if 语句检查一分钟过去的时间。因此,if 语句内的代码每 60 秒触发一次,而 if 块下方的代码每秒触发一次。
随时随地看视频慕课网APP

相关分类

Go
我要回答