詳解Golang time包中的結構體time.Ticker
time.Ticker
time.Ticker 會按照一個指定的時間間隔周期性地往一個 channel 中發(fā)送一個 time.Time 類型的數(shù)據(jù),channel的 接收者可以以這個固定的時間間隔從 channel 中讀取這個數(shù)據(jù),常用于實現(xiàn)定時相關的功能。結構體定義和對應的方法如下:
type Ticker struct { C <-chan Time // The channel on which the ticks are delivered. r runtimeTimer }
有兩個方法:
- func (t *Ticker) Reset(d Duration),停止計時器并將其周期重置為指定的時間間隔。
- func (t *Ticker) Stop(),關閉計時器,調用此方法之后,將不再發(fā)送 tick。
使用示例
可以使用 time.NewTicker 函數(shù)創(chuàng)建一個 Ticker 實例,簡單使用示例如下:
package main import ( "fmt" "time" ) func main() { ticker := time.NewTicker(time.Second) // 每隔1s進行一次打印 defer ticker.Stop() count := 0 for { <-ticker.C fmt.Println("Tick") count++ if count > 2 { ticker.Reset(2 * time.Second) } if count > 5 { break } } }
首先創(chuàng)建了一個 time.Ticker 對象,時間間隔為1秒,第 3 次之后將時間間隔改為 2 秒,第 6 次后退出循環(huán)。
到此這篇關于詳解Golang time包中的結構體time.Ticker的文章就介紹到這了,更多相關Golang結構體time.Ticker內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
go?defer?return?panic?執(zhí)行順序示例詳解
這篇文章主要介紹了go?defer?return?panic?執(zhí)行順序,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01基于golang channel實現(xiàn)的輕量級異步任務分發(fā)器示例代碼
這篇文章主要給大家介紹了關于基于golang channel實現(xiàn)的輕量級異步任務分發(fā)器的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-07-07