欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 能源 > golang for range time.Ticker 和 time.Timer时间通道使用示例 - 每隔指定时间执行一次,执行指定时长后退出执行

golang for range time.Ticker 和 time.Timer时间通道使用示例 - 每隔指定时间执行一次,执行指定时长后退出执行

2024/10/25 15:32:28 来源:https://blog.csdn.net/tekin_cn/article/details/141064552  浏览:    关键词:golang for range time.Ticker 和 time.Timer时间通道使用示例 - 每隔指定时间执行一次,执行指定时长后退出执行

golang中的 ticker和timer时间通道除了可以使用for select case语句来执行外, 还可以使用 for range语句来执行ticker或者timer时间通道。

 for range time.Ticker 和 time.Timer时间通道使用示例

下面的示例演示了time.Ticker 和 time.Timer的区别和使用演示。

Ticker时间续断器 每隔2秒打印一次当前时间,打印60秒后退出程序; time.Timer定时器设定在10秒钟后执行一次输出 “时间到了+当前时间”

package mainimport ("fmt""time"
)func main() {// 时间续断器 每隔2秒钟执行一次ticker := time.NewTicker(2 * time.Second)// 定时器 在10秒钟后执行timer := time.NewTimer(10 * time.Second)// 另外启动一个协程来执行定时器逻辑  注意这里的协程会在主线程退出时退出!go func() {for t := range timer.C {fmt.Println(" 时间到了: " + t.Format(time.DateTime))}}()start := time.Now() // 开始时间,这个用来中断续断器// 这里的for语句会阻塞当前进程for nextTs := range ticker.C {fmt.Printf("%v \n", nextTs.Format(time.DateTime))// 执行60秒后退出if time.Since(start) >= 60*time.Second {// 停止续断器 注意,这个不会关闭通过,仅会停止向通道发送数据, 所以如果不break退出循环,则在下次range的时候会panic异常.ticker.Stop()break // 退出for range循环}}fmt.Println("------end-------") // 这个代码在退出for range循环后才会被执行
}

Ticker与Timer 区别图示

for select case Ticker Timer 使用示例参考: golang for select { case } 语句 time.Ticker每隔指定时间间隔就执行一次;time.Timer在指定的时间之后执行一次,Ticker和Timer的区别和用法总结-CSDN博客

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com