Go斷續器範例


計時器是當想在未來做一些事情 - tickers是用於定期做一些事情。 這裡是一個例行程式,周期性執行直到停止。

程式碼機使用與計時器的機制類似:傳送值到通道。 這裡我們將使用通道上的一個範圍內來迭代值,這此值每500ms到達。

程式碼可以像計時器一樣停止。當程式碼停止後,它不會在其通道上接收任何更多的值。我們將在1600ms後停止。

當執行這個程式時,ticker應該在我們停止之前打3次。

所有的範例程式碼,都放在 F:\worksp\golang 目錄下。安裝Go程式設計環境請參考:/2/23/798.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")
}

執行上面程式碼,將得到以下輸出結果 -

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