package main import ( "fmt" "time" ) func main() { //創建定時器,每隔1秒后,定時器就會給channel發送一個事件(當前時間) ticker := time.NewTicker(time.Second * 1) i := 0 go func() { for { //循環 <-ticker.C i++ fmt.Println("i = ", i) if i == 5 { ticker.Stop() //停止定時器 } } }() //別忘了() //死循環,特地不讓main goroutine結束 for { } }
Ticker是一個周期觸發定時的計時器,它會按照一個時間間隔往channel發送系統當前時間,而channel的接收者可以以固定的時間間隔從channel中讀取事件。
相關函數:
NewTicker()返回一個新的Ticker,該Ticker包含一個通道字段,並會每隔時間段d就向該通道發送當時的時間。它會調整時間間隔或者丟棄tick信息以適應反應慢的接收者。如果d<=0會panic。關閉該Ticker可以釋放相關資源。
Stop()關閉一個Ticker。在關閉后,將不會發送更多的tick信息。Stop不會關閉通道t.C,以避免從該通道的讀取不正確的成功。