Golang的time.NewTicker周期性定時器使用案例
作者:尹正傑
版權聲明:原創作品,謝絕轉載!否則將追究法律責任。
Ticker是一個周期觸發定時的計時器,它會按照一個時間間隔往channel發送系統當前時間,而channel的接收者可以以固定的時間間隔從channel中讀取事件。
一.通過NewTicker函數定義定時器
package main import ( "fmt" "time" ) func main() { //創建一個周期性的定時器 ticker := time.NewTicker(3 * time.Second) fmt.Println("當前時間為:", time.Now()) go func() { for { //從定時器中獲取數據 t := <-ticker.C fmt.Println("當前時間為:", t) } }() for { time.Sleep(time.Second * 1) } }
二.停止定時器
package main import ( "fmt" "runtime" "time" ) func main() { //創建一個周期性的定時器 ticker := time.NewTicker(3 * time.Second) //定義計數器 count := 1 fmt.Println("當前時間為:", time.Now(), "count = ", count) go func() { for { //從定時器中獲取數據 t := <-ticker.C count++ fmt.Println("當前時間為:", t, "count = ", count) if count == 10 { /** 如果周期性定時被消費10次后就停止該定時器 */ ticker.Stop() runtime.Goexit() } } }() for { time.Sleep(time.Second * 1) } }

