1

我有一个持续运行一个间隔的 for 循环,但是我只将它用作我希望每 10 分钟运行一次的函数。我怎样才能声明这个for循环而不必在循环内的某处使用'x'

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

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

我曾尝试重组 for 循环,但如果不专门使用“x”,它不会运行,我知道我可以简单地在循环内使用“x”做一些事情,但我宁愿学习如何正确实现这个 for 循环做一个黑客。

4

3 回答 3

6

任何一个

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

或者

interval := time.Tick(someTime)

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

或者

interval := time.Tick(someTime)

for {
        <-interval
        // ...
}
于 2013-05-03T14:34:54.657 回答
5

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

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

for _ = range interval {
  ...
}

规范说:

由下划线字符 _ 表示的空白标识符可以像任何其他标识符一样在声明中使用,但该声明不会引入新的绑定。

于 2013-05-03T14:34:40.233 回答
0

我怎样才能声明这个for循环而不必在循环内的某处使用'x'

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

for range interval {
  ...
}

请参阅提示 1.4 文档

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

更新:该更改严格向后兼容现有的 Go 程序,但分析 Go 解析树的工具可能需要修改以接受这种新形式,因为Key现在RangeStmt可能是nil.

于 2014-10-30T07:32:56.957 回答