首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Go程序例子(39):计时器

Go程序例子(39):计时器

原创
作者头像
用户11078756
发布2024-12-18 09:53:18
发布2024-12-18 09:53:18
1820
举报
文章被收录于专栏:go程序例子go程序例子

定时器用于当你希望在未来某个时间做一次某事时,而计时器(tickers)则用于当你希望按固定间隔重复做某事时。下面是一个计时器的示例,它会定期触发,直到我们停止它。

代码语言:go
复制
package main

import (
    "fmt"
    "time"
)

func main() {
	// 计时器使用与定时器类似的机制:一个发送值的通道。在这里,我们将使用 select 内建函数在通道上等待值的到来,每 500 毫秒触发一次。
    ticker := time.NewTicker(500 * time.Millisecond)
    done := make(chan bool)

    go func() {
        for {
            select {
            case <-done:
                return
            case t := <-ticker.C:
                fmt.Println("Tick at", t)
            }
        }
    }()
	// 计时器可以像定时器一样停止。一旦计时器停止,它将不再在其通道上接收任何值。我们将在 1600 毫秒后停止它。
    time.Sleep(1600 * time.Millisecond)
    ticker.Stop()
    done <- true
    fmt.Println("Ticker stopped")
}

当我们运行这个程序时,计时器应该会在我们停止它之前触发 3 次。

代码语言:javascript
复制
$ go run tickers.go
Tick at 2012-09-23 11:29:56.487625 -0700 PDT
Tick at 2012-09-23 11:29:56.988063 -0700 PDT
Tick at 2012-09-23 11:29:57.488076 -0700 PDT
Ticker stopped

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档