您的位置:首页 > 文旅 > 美景 > 珠海网站怎样建设_企业邮箱排行榜_泰安seo培训_seo搜索规则

珠海网站怎样建设_企业邮箱排行榜_泰安seo培训_seo搜索规则

2024/12/5 21:23:23 来源:https://blog.csdn.net/qq_42476938/article/details/143683674  浏览:    关键词:珠海网站怎样建设_企业邮箱排行榜_泰安seo培训_seo搜索规则
珠海网站怎样建设_企业邮箱排行榜_泰安seo培训_seo搜索规则

挪威特罗姆瑟夜景

🌈Don’t worry , just coding!
内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。

📗概念

在 Go 语言中,Ticker 是一个用于定期执行某些操作的工具。它属于 time 包,提供了一种简单的方法来处理定时任务,适用于需要周期性执行的场景。

💻代码

package mainimport ("fmt""time"
)func main() {// 创建一个 Ticker,每秒触发一次ticker := time.NewTicker(1 * time.Second)defer ticker.Stop() // 用 defer 确保在 main 函数结束时停止它。// 启动一个 goroutine 来处理 Tickergo func() {//使用 for 循环从 ticker.C 接收时间信号,并打印每次触发的时间。for t := range ticker.C {fmt.Println("Tick at", t)}}()// 模拟一些工作time.Sleep(5 * time.Second)fmt.Println("Stopping the ticker...")// 停止 Ticker,将停止发送信号到通道 C。ticker.Stop()
}
//输出
//Tick at 2024-11-11 14:28:42.510614942 +0800 CST m=+1.000234620
//Tick at 2024-11-11 14:28:43.510633219 +0800 CST m=+2.000234257
//Tick at 2024-11-11 14:28:44.51065133 +0800 CST m=+3.000234105
//Tick at 2024-11-11 14:28:45.510671323 +0800 CST m=+4.000234743
//Stopping the ticker...

🔍理解

  • Timer函数一般用于一次定时任务,Ticker函数用于周期性的定时任务
  • Ticker 适用于需要定期执行的任务,例如定时检查状态、定期发送心跳等。
  • 使用 goroutine 处理 Ticker 的触发,使得主程序可以继续执行其他操作。
  • 使用 Stop() 方法可以安全地停止 Ticker,避免在不再需要时继续占用资源
  • 使用 time.NewTicker 函数创建一个新的 Ticker。该函数接受一个 time.Duration 类型的参数,表示每次触发的间隔时间。

💡 Tips小知识点

经典场景

package mainimport ("fmt""time"
)func main() {// 创建一个 Ticker,每 500 毫秒触发一次ticker := time.NewTicker(500 * time.Millisecond)done := make(chan bool) // 创建一个用于通知停止的通道// 启动一个 goroutine 来处理 Tickergo func() {for {select {case <-done: // 如果接收到停止信号,退出循环returncase t := <-ticker.C: // 从 Ticker 的通道接收时间信号fmt.Println("Tick at", t) // 打印当前时间}}}()// 主 goroutine 暂停 1600 毫秒time.Sleep(1600 * time.Millisecond)ticker.Stop()                 // 停止 Tickerdone <- true                  // done <- true // 发送信号,通知 goroutine 停止fmt.Println("Ticker stopped") // 打印停止消息
}//输出
//Tick at 2024-11-11 14:32:10.746581931 +0800 CST m=+0.500304237
//Tick at 2024-11-11 14:32:11.246590386 +0800 CST m=+1.000303450
//Tick at 2024-11-11 14:32:11.746599522 +0800 CST m=+1.500303668
//Ticker stopped
  • done <- true 和 done <- false 都是向通道发送信号的操作。
  • true 通常表示停止或完成,而 false 可以表示继续或保持状态。
  • 使用 done 通道来安全地停止 goroutine,避免直接使用 os.Exit 或其他强制退出的方法。

💪无人扶我青云志,我自踏雪至山巅。
在这里插入图片描述

版权声明:

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

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