【问题标题】:Go lang, don't understand what this code doesgo lang,不明白这段代码是做什么的
【发布时间】:2019-11-21 14:33:38
【问题描述】:

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

这个刻度是什么以及它的结尾部分:

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

【问题讨论】:

    标签: go time


    【解决方案1】:

    tick 是 Go 中的一个频道。如果您查看docstick 应该在每个时间间隔向通道发送一次内容,这由您的代码中的time.Duration(1000/config.Samplerate) * time.Millisecond 指定。 &lt;-tick 只是等待该时间间隔过去。

    i 会记录经过的秒数,因此每次滴答作响时,您都会在i 上加一。 if 语句检查一分钟过去的时间。

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

    【讨论】:

    • 那么,如果我理解代码是错误的,因为如果我将 Samplerate 更改为 10,那么它将在 100ms 处滴答作响,代码将分别执行 6s 和 100ms?
    猜你喜欢
    • 2020-03-02
    • 2020-01-04
    • 1970-01-01
    • 2017-03-05
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2014-04-11
    • 2010-12-14
    相关资源
    最近更新 更多