timetime

一、time.NewTicker

time.NewTickertime.Time
time.NewTicker
package main

import (
    "fmt"
    "time"
)

func main() {
    // 创建一个每隔1秒触发一次的定时器
    ticker := time.NewTicker(1 * time.Second)

    // 使用匿名的 goroutine 来处理定时触发的事件
    go func() {
        for {
            // 通过 <-ticker.C 从通道中接收时间信号,此处会每隔1秒触发一次
            // 可以在这里执行你想要的操作
            fmt.Println("Tick at", <-ticker.C)
        }
    }()

    // 主函数继续运行,这里只是演示,让主程序不会立即退出
    // 在实际使用中,你可能需要让程序运行一段时间或者通过某种方式等待goroutine执行完毕
    time.Sleep(5 * time.Second)

    // 停止定时器
    ticker.Stop()
    fmt.Println("Ticker stopped")
}

上述代码创建了一个每隔1秒触发一次的定时器,并通过匿名的 goroutine 来处理定时触发的事件。程序会运行5秒后,停止定时器,并输出"Ticker stopped"。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/52662.html

注意,在实际使用中,你可能需要根据实际需求,使用不同的时间间隔,以及采取适当的方式来控制定时器的生命周期。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/52662.html

二、time.After

time.Aftertime.After
package main

import (
    "fmt"
    "time"
)

func task() {
    fmt.Println("Task executed at", time.Now())
}

func main() {
    // 创建一个定时器,2秒后触发定时任务
    timer := time.After(2 * time.Second)

    // 阻塞直到定时器触发
    <-timer

    // 执行定时任务
    task()

    // 主函数会继续运行,这里只是演示,让主程序不会立即退出
    time.Sleep(1 * time.Second)
}
time.After<-timertask()
time.Ticktime.Aftertime.Sleep