Golang定時器是我們在程序開發中經常會用到的技術,但是關于定時器的使用其實有很多需要注意的地方,比較容易踩坑
一、常見的幾種定時器實現
1、Tick
time.Tick返回一個chan Time通道,通過chan來實現最簡單的定時器功能
func Timer() {
duration := time.Second
for next := range time.Tick(duration) {
fmt.Println(next)
}
}
2、Ticker
func Timer() {
duration := time.Second
ticker := time.NewTicker(duration)
for next := range ticker.C {
fmt.Println(next)
}
}
3、Timer
Timer嚴格來說不算是可循環的定時器,它更像是一個一次性的定時器,但是它提供了一個Reset方法來重置這個一次性定時器的時間,通過手動地調用Reset方法可以實現循環定時器地效果
func Timer() {
duration := time.Second
timer := time.NewTimer(duration)
for next := range timer.C {
fmt.Println(next)
timer.Reset(duration)
}
}