詳解Golang time包中的結(jié)構(gòu)體time.Ticker
time.Ticker
time.Ticker 會(huì)按照一個(gè)指定的時(shí)間間隔周期性地往一個(gè) channel 中發(fā)送一個(gè) time.Time 類型的數(shù)據(jù),channel的 接收者可以以這個(gè)固定的時(shí)間間隔從 channel 中讀取這個(gè)數(shù)據(jù),常用于實(shí)現(xiàn)定時(shí)相關(guān)的功能。結(jié)構(gòu)體定義和對應(yīng)的方法如下:
type Ticker struct { C <-chan Time // The channel on which the ticks are delivered. r runtimeTimer }
有兩個(gè)方法:
- func (t *Ticker) Reset(d Duration),停止計(jì)時(shí)器并將其周期重置為指定的時(shí)間間隔。
- func (t *Ticker) Stop(),關(guān)閉計(jì)時(shí)器,調(diào)用此方法之后,將不再發(fā)送 tick。
使用示例
可以使用 time.NewTicker 函數(shù)創(chuàng)建一個(gè) Ticker 實(shí)例,簡單使用示例如下:
package main import ( "fmt" "time" ) func main() { ticker := time.NewTicker(time.Second) // 每隔1s進(jìn)行一次打印 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)建了一個(gè) time.Ticker 對象,時(shí)間間隔為1秒,第 3 次之后將時(shí)間間隔改為 2 秒,第 6 次后退出循環(huán)。
到此這篇關(guān)于詳解Golang time包中的結(jié)構(gòu)體time.Ticker的文章就介紹到這了,更多相關(guān)Golang結(jié)構(gòu)體time.Ticker內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Go defer與time.sleep的使用與區(qū)別
- 詳解Golang time包中的time.Duration類型
- 詳解Golang time包中的結(jié)構(gòu)體time.Time
- Go?中?time.After?可能導(dǎo)致的內(nèi)存泄露問題解析
- Golang time.Sleep()用法及示例講解
- go?time.Sleep睡眠指定時(shí)間實(shí)例詳解(小時(shí)級(jí)到納秒級(jí))
- 淺談golang 中time.After釋放的問題
- 解決Golang time.Parse和time.Format的時(shí)區(qū)問題
- go語言time.After()的作用
相關(guān)文章
go開源項(xiàng)目用戶名密碼驗(yàn)證的邏輯鬼才寫法
這篇文章主要為大家介紹了go開源項(xiàng)目中發(fā)現(xiàn)的一個(gè)邏輯鬼才寫法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07go?defer?return?panic?執(zhí)行順序示例詳解
這篇文章主要介紹了go?defer?return?panic?執(zhí)行順序,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01基于golang channel實(shí)現(xiàn)的輕量級(jí)異步任務(wù)分發(fā)器示例代碼
這篇文章主要給大家介紹了關(guān)于基于golang channel實(shí)現(xiàn)的輕量級(jí)異步任務(wù)分發(fā)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07