去郎,不明白这段代码做什么

时间:2019-07-11 20:05:21

标签: go time

我对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++

1 个答案:

答案 0 :(得分:2)

tick是Go中的频道。如果您查看docs,则tick应该每个时间间隔向通道发送一次消息,该间隔由代码中的time.Duration(1000/config.Samplerate) * time.Millisecond指定。 <-tick仅等待该时间间隔过去。

i会跟踪经过了几秒钟,因此,每次滴答滴答时,您都将一个数字添加到i中。 if语句检查何时经过一分钟。

因此,if语句中的代码每60秒触发一次,而if块下的代码则每秒触发一次。