Golang time.NewTicker()函数及示例
首先我们来看一下time.NewTicker()函数的概述:
func NewTicker(d Duration) *Ticker
该函数的作用是返回一个Ticker类型的值,该值会在每隔指定的时间(参数d)后向其自身的Channel C中发送一个时间值,表示时间间隔已经过去了。使用Ticker可以在指定的时间间隔内周期性地执行某些任务。
例子
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
fmt.Println("This is a demo for Ticker!")
}
}
}
上述代码中,我们首先使用time.NewTicker(1 * time.Second)创建一个Ticker,它会每隔1秒钟向其自身的Channel C中发送一个时间值。然后我们在一个无限循环中使用select语句监听该Channel,当有值传入时,我们就执行相应的任务。这里的任务就是简单地输出一条信息 “This is a demo for Ticker!”。
由于Ticker是一个周期性的事件,所以我们需要使用defer ticker.Stop()来确保程序退出时停止Ticker的运行。
运行结果
程序会每隔1秒钟输出一条信息,直到我们手动停止程序运行。
扩展
在实际的应用场景中,Ticker可以被用于各种周期性的任务,比如:
- 每隔一定时间向某个设备发送一个心跳包
- 定时从数据库读取某个数据并进行处理
- 定时刷新某个缓存数据