如何在不使用循环变量的情况下构建循环tick

时间:2013-05-03 14:31:05

标签: go intervals

我有一个持续运行一段时间的for循环,但我只是将它用作我想要每10分钟运行一次的函数。如何声明这个for循环而不必在循环内部的某处使用'x'

interval := time.Tick(10 * time.Minute)

for x := range interval {
  ...code that does not use x
}

我已经尝试重构for循环但没有任何结果导致它运行而没有专门使用'x',我知道我只能在循环内部用'x'做一些事情,但我宁愿学习如何正确实现这个for循环然后做一个黑客。

3 个答案:

答案 0 :(得分:6)

无论

for {
        <-time.After(someTime)
        // ...
}

interval := time.Tick(someTime)

for ; ; <-interval { // First interval == 0
        // ...
}

interval := time.Tick(someTime)

for {
        <-interval
        // ...
}

答案 1 :(得分:5)

您可以使用_来表示您将忽略的变量:

interval := time.Tick(10 * time.Minute)

for _ = range interval {
  ...
}

spec说:

  

空格标识符,由下划线字符_表示,可以   在声明中使用,就像任何其他标识符一样,但声明   没有引入新的约束力。

答案 2 :(得分:0)

  

如何在不必使用&#39; x&#39;的情况下声明此for循环?在循环内的某个地方

开始go1.4(2014年第4季度),您将能够:

for range interval {
  ...
}

请参阅go tip 1.4 doc

  

从Go 1.4开始,无变量形式现在是合法的   这种模式很少出现,但代码可以更清晰。

     

更新:此更改严格向后兼容现有的Go程序,但可能需要修改分析Go解析树的工具以接受此新表单,因为Key的{​​{1}}字段现在可能是RangeStmt