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

golang 定时器

 写法一:

package mainimport ("fmt""sync""time"
)type DemoTicker struct {ch   <-chan time.Timestop chan struct{}sg   *sync.WaitGroup
}func main() {count, stopCount := 0, 5demo := DemoTicker{ch:   time.Tick(time.Second * 1),stop: make(chan struct{}),sg:   &sync.WaitGroup{},}demo.sg.Add(1)go func() {demo.sg.Done()for {select {case <-demo.ch:println("tick1")count++if count == stopCount {demo.stop <- struct{}{}}}}}()<-demo.stopdemo.sg.Wait()fmt.Println("done")}
结果:
tick1
tick1
tick1
tick1
tick1
done

写法二:

package mainimport ("fmt""sync""time"
)type DemoTicker struct {*time.Tickerstop chan struct{}sg   *sync.WaitGroup
}func main() {count, stopCount := 0, 5demo := DemoTicker{Ticker: time.NewTicker(time.Second * 1),stop:   make(chan struct{}),sg:     &sync.WaitGroup{},}demo.sg.Add(1)ticker := demo.Tickergo func() {defer demo.sg.Done()for {select {case <-ticker.C:fmt.Printf("count:%d\n", count)count++if count == stopCount {demo.stop <- struct{}{}ticker.Stop()}}}}()<-demo.stopfmt.Printf("stop")}

结果

API server listening at: 127.0.0.1:59859
WARNING: undefined behavior - Go version go1.18.10 is too old for this version of Delve (minimum supported version 1.21)
count:0
count:1
count:2
count:3
count:4
stop
调试器 已完成,退出代码为 0

相关文章:

  • 软件测试——面试八股文(入门篇)
  • React vs Vue:点击外部事件处理的对比与实现
  • 深入理解 TypeScript 的 Partial<T> 类型
  • 菜狗的脚步学习
  • [SAP] 通过程序名获取事务码TCode
  • Scala和Go差异
  • c++STL-通用(反向)迭代器适配器
  • 算法第十七天|654. 最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
  • 第十六章 常用存储器介绍
  • 手机相册的 “智能分类” 功能
  • 数学复习笔记 7
  • Playwright 安装配置文件详解
  • Spark缓存-cache
  • 数据擦除标准:1-Pass vs. 3-Pass vs. 7-Pass有什么区别,哪个更好?
  • 【MySQL】第三弹——表的CRUD进阶(一)数据库约束
  • 专栏特辑丨悬镜浅谈开源风险治理之SBOM与SCA
  • 鸿蒙Next开发 获取APP缓存大小和清除缓存
  • Open Source Geospatial Content Management System -GeoNode
  • 《100天精通Python——基础篇 2025 第18天:正则表达式入门实战,解锁字符串处理的魔法力量》
  • Leetcode 3547. Maximum Sum of Edge Values in a Graph
  • 陕西河南山西等地将现“干热风”灾害,小麦产区如何防范?
  • 阿尔巴尼亚执政党连续第四次赢得议会选举,反对党此前雇用特朗普竞选经理
  • 对话郑永年:我们谈判也是为世界争公义
  • 上海浦东机场1号、2号航站楼均推出国内出发安检24小时服务
  • 1至4月我国汽车产销量首次双超千万辆
  • “饿了么”枣庄一站点两名连襟骑手先后猝死,软件显示生前3天每日工作超11小时