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)
}
}