Timer計時器
如果希望在將來的某個時間點執行Go代碼,或者在某個時間間隔重復執行Go代碼,使用Go內置的timer和ticker功能。
先看定時器timer,然后再看計時器ticker。定時器代表未來的單個事件。告訴定時器需要等待多長時間,它返回一個通道,時間到后通道得到通知。如例所示設置定時器將等待2秒,語法
如果您只是想等待,則可以使用time.Sleep也可以實現相同的效果。使用定時器的好處是可以在它觸發之前取消。下面是一個例子,定時器2需要足夠的時間來觸發,但立刻就被停止。因此結果是,第一個定時器在程序運行~2秒后觸發,但第二個定時器觸發之前就被停止了。

結果:
$ go run timers.go
Timer 1 fired
Timer 2 stopped
Ticker計時器
定時器是用來在未來做一次性任務時使用的,如果要重復地以指定間隔做某件事情時使用計時器。
這里有一個例子,一個ticker在我們停止它之前會周期性地觸發,ticker使用類似于timers的機制:通道。例子中,將在通道上使用select語句來等待每500毫秒到達的值。
可以像停止定時器一樣停止計時器。一旦計時器停止,無法在其通道上接收更多的值。1600ms后停止程序,在此之前,ticker應該觸發了3次。

結果:
$ go run tickers.go
Tick at 2012-09-23 11:29:56.487625 -0700 PDT
Tick at 2012-09-23 11:29:56.988063 -0700 PDT
Tick at 2012-09-23 11:29:57.488076 -0700 PDT
Ticker stopped