計時器是當(dāng)想在未來做一些事情 - tickers
是用于定期做一些事情。 這里是一個例行程序,周期性執(zhí)行直到停止。
代碼機(jī)使用與計時器的機(jī)制類似:發(fā)送值到通道。 這里我們將使用通道上的一個范圍內(nèi)來迭代值,這此值每500ms
到達(dá)。
代碼可以像計時器一樣停止。當(dāng)代碼停止后,它不會在其通道上接收任何更多的值。我們將在1600ms
后停止。
當(dāng)運(yùn)行這個程序時,ticker
應(yīng)該在我們停止之前打3
次。
所有的示例代碼,都放在
F:\worksp\golang
目錄下。安裝Go編程環(huán)境請參考:http://www.yiibai.com/go/go_environment.html
timers.go
的完整代碼如下所示 -
package main
import "time"
import "fmt"
func main() {
// Tickers use a similar mechanism to timers: a
// channel that is sent values. Here we'll use the
// `range` builtin on the channel to iterate over
// the values as they arrive every 500ms.
ticker := time.NewTicker(time.Millisecond * 500)
go func() {
for t := range ticker.C {
fmt.Println("Tick at", t)
}
}()
// Tickers can be stopped like timers. Once a ticker
// is stopped it won't receive any more values on its
// channel. We'll stop ours after 1600ms.
time.Sleep(time.Millisecond * 1600)
ticker.Stop()
fmt.Println("Ticker stopped")
}
執(zhí)行上面代碼,將得到以下輸出結(jié)果 -
F:\worksp\golang>go run tickers.go
Tick at 2017-01-21 14:24:48.8807832 +0800 CST
Tick at 2017-01-21 14:24:49.380263 +0800 CST
Tick at 2017-01-21 14:24:49.882174 +0800 CST
Ticker stopped