当前位置: 首页 > news >正文

golang 不用sleep如何实现实现每隔指定时间执行一次for循环?

今天介绍的是在go语言里面不用time.Sleep, 使用for range 定时器管道 来实现按照我们指定的时间间隔来执行for循环, 即: for range ticker.C { } 这样就实现了for每隔指定时间执行一次,除非管道被关闭,否则for而且会一直柱塞当前线程,

实现测试代码如下:


import ("bufio""fmt""os""testing""time"
)// 测试for range 定时器管道 
func TestDemo(t *testing.T) {ticker := time.NewTicker(2 * time.Second) // 定时器 每隔2秒执行一次defer ticker.Stop()                       // 确保退出时关闭定时器buf := bufio.NewWriter(os.Stdout)//因为这里的ticker.C是一个管道, 在未关闭管道之前这个for会一直阻塞, 这里是一个定时器管道 即每隔2秒钟这个for就会被执行一次// 如果不需要变量x,则 可以省略, 如: for range tick.C { //...for x := range ticker.C {// 向os.Stdout写入数据buf.WriteString("\nx: " + x.Format("2006-01-02 15:04:05"))buf.Flush() // 输出数据}panic("unreachable")
}

for语句后面可选跟的三种表达式    [ Condition | ForClause | RangeClause ] , 上面的例子就是第三种可选 RangeClause (范围语句)

官方说明和语法:

A "for" statement specifies repeated execution of a block. There are three forms: The iteration may be controlled by a single condition, a "for" clause, or a "range" clause.

ForStmt = "for" [ Condition | ForClause | RangeClause ] Block .
Condition = Expression .

总结: for后面可选跟3种表达式, 第一个是条件即 boolean, 第二个可选是 一个语句, 第三个是range语句, 可以看出,在我们学习go语言的时候,要学会能够看明白官方的这个语法很重要.....

http://www.lryc.cn/news/367470.html

相关文章:

  • 【el-tooltips改造】Vue实现文本溢出才显示el-tooltip,否则不显示el-tooltips
  • 【Python数据类型的奥秘】:构建程序基石,驾驭信息之海
  • vue使用html2canvas截图下载时,存在svg或者img或者特殊字体时截图不全的解决办法
  • 机器学习----奥卡姆剃刀定律
  • 【设计模式】行为型设计模式之 模板方法模式
  • 智能合约中断言失败
  • flink读取hive写入http接口
  • 【论文阅读】MODELING AND SOLVING THE TRAVELING SALESMAN PROBLEM WITH PRIORITY PRIZES
  • 【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南
  • STM32快速入门(ADC数模转换)
  • Linux环境在非root用户中搭建(java-tomcat-redis)
  • Unity 之 代码修改材质球贴图
  • spark-3.5.1+Hadoop 3.4.0+Hive4.0 分布式集群 安装配置
  • Matlab实现GWO-CNN-LSTM-Mutilhead-Att灰狼算法卷积长短期记忆神经网络融合多头注意力机制预测 SCI顶级优化
  • RTKLIB之RTKPLOT画图工具
  • 本地部署 RAGFlow
  • php常用数据库操作
  • 判断经纬度是否在某个城市内
  • Java——数组排序和查找
  • Flutter中防抖动和节流策略
  • 设计模式-中介者(调停者)模式(行为型)
  • HC-05蓝牙模块配置连接和使用
  • 云上小知识:企业选择云服务的小Tips
  • 生成式人工智能 - Stable Diffusion 都使用了哪些技术?
  • React的useState的基础使用
  • 接口自动化Requests+Pytest基础实现
  • 深入解析Kafka消息传递的可靠性保证机制
  • jEasyUI 设置排序
  • MySQL之查询性能优化(十二)
  • 7-16 二分查找