2013-05-03 33 views
1

我有一个for循环,它可以持续在一个时间间隔内运行,但是我只是将它用作我希望每10分钟运行一次的函数。我怎样才能宣布这个for循环而不必使用“X”某处的循环内如何在不使用循环变量的情况下构建循环的刻度

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

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

我试图重组为运行在其循环,但没有什么结果,而具体使用“X”,我知道我可能只是简单地在循环中用'x'做一些事情,但我宁愿学习如何正确地实现这个循环,然后做一个黑客攻击。

回答

6

要么

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

interval := time.Tick(someTime) 

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

interval := time.Tick(someTime) 

for { 
     <-interval 
     // ... 
} 
+0

我不认为第二种形式会编译(对于< - 间隔),通道返回time.Time值,而不是布尔值。 – mna 2013-05-03 15:11:35

+0

@PuerkitoBio:你说得对,谢谢。固定。 – zzzz 2013-05-03 15:17:00

5

您可以使用_表示变量,你会忽略:

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

for _ = range interval { 
    ... 
} 

spec说:

空白标识,下划线_表示,可以 被用声明像任何其他标识符,但声明 不会引入新的绑定。

0

我怎样才能宣布这个for循环而不必使用 'X' 的地方的内循环

开始go1.4(Q4 2014),你将能够做到:

for range interval { 
    ... 
} 

go tip 1.4 doc

为围棋1.4的可变自由形式是现在合法的
该模式很少出现,但代码可以更干净。

更新:这种变化是严格向后现有围棋程序兼容,但分析去解析树工具可能需要进行修改,以接受这种新形式的RangeStmtKey场现在可能nil

相关问题