Go 如何实现定时任务?

5 min read

Go 有多种方式可以实现定时任务,下面分别介绍其中两种:

  1. 使用 time 包

Go 的标准库中提供了 time 包,其中的 time.Tick() 方法可以用来创建定时器,如下所示:

package main

import (
	"fmt"
	"time"
)

func main() {
	for range time.Tick(time.Second) {
		fmt.Println("Tick")
	}
}

以上代码会每秒钟打印一次 "Tick"。

  1. 使用第三方库 cron

另一种常用的方式是使用第三方库 cron,它实现了类 Unix 系统下的 cron 定时任务功能。下面是使用 cron 实现的代码示例:

package main

import (
    "fmt"
    "github.com/robfig/cron"
)

func main() {
    c := cron.New()
    spec := "*/5 * * * * ?"       // 每5秒执行一次
    c.AddFunc(spec, func() {
        fmt.Println("cron running...")
    })
    c.Start()
    defer c.Stop()
    select {}
}

以上代码使用 cron.New() 创建一个新的 cron 实例,指定定时任务的 cron 表达式,然后添加实际执行任务的函数,最后启动 cron 定时任务。在本例中,每5秒钟执行一次,输出 "cron running..."。

以上两种方式都可以实现定时任务,适用场景不同,可以根据自己的具体需求选择合适的方案。