詳解Golang time包中的結(jié)構(gòu)體time.Ticker
time.Ticker
time.Ticker 會按照一個(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)文章希望大家以后多多支持腳本之家!
相關(guān)文章
go開源項(xiàng)目用戶名密碼驗(yàn)證的邏輯鬼才寫法
這篇文章主要為大家介紹了go開源項(xiàng)目中發(fā)現(xiàn)的一個(gè)邏輯鬼才寫法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
go?defer?return?panic?執(zhí)行順序示例詳解
這篇文章主要介紹了go?defer?return?panic?執(zhí)行順序,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
基于golang channel實(shí)現(xiàn)的輕量級異步任務(wù)分發(fā)器示例代碼
這篇文章主要給大家介紹了關(guān)于基于golang channel實(shí)現(xiàn)的輕量級異步任務(wù)分發(fā)器的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07

