Go 有多种方式可以实现定时任务,下面分别介绍其中两种:
- 使用 time 包
Go 的标准库中提供了 time 包,其中的 time.Tick() 方法可以用来创建定时器,如下所示:
package main
import (
"fmt"
"time"
)
func main() {
for range time.Tick(time.Second) {
fmt.Println("Tick")
}
}
以上代码会每秒钟打印一次 "Tick"。
- 使用第三方库 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..."。
以上两种方式都可以实现定时任务,适用场景不同,可以根据自己的具体需求选择合适的方案。