摘要:在 Golang 开发中,定时任务是常见的需求。本文将介绍几种在 Golang 中实现定时任务的方法,包括 time 包的定时器、ticker,以及第三方库 cron,并通过示例代码展示它们的使用方式。
一、time 包的定时器(time.Timer 和 time.Ticker)
Golang 的标准库 time 提供了定时器 time.Timer 和 ticker time.Ticker,它们可以用来实现简单的定时任务。
package main
import (
"fmt"
"time"
)
func main() {
timer := time.NewTimer(2 * time.Second)
<-timer.C
fmt.Println("Timer expired")
}
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(1 * time.Second)
for {
select {
case <-ticker.C:
fmt.Println("Ticker ticked")
}
}
}
二、第三方库 cron
Golang 的第三方库 cron 提供了一个定时任务调度器,它基于 Unix cron 的语法,可以用来执行更复杂的定时任务。
go get github.com/robfig/cron
package main
import (
"fmt"
"github.com/robfig/cron"
"time"
)
func main() {
c := cron.New()
// 添加定时任务
c.AddFunc("*/5 * * * * ?", func() {
fmt.Println("Cron ticked", time.Now())
})
// 启动定时任务
c.Start()
// 阻塞主线程,否则主线程退出后定时任务也会停止
select {}
}
在这个例子中,我们使用 */5 * * * * ?
表达式添加了一个每 5 秒执行一次的定时任务。
三、总结
在 Golang 中实现定时任务有多种方法,可以使用标准库 time 的定时器和 ticker,也可以使用第三方库 cron 来实现更复杂的定时任务。根据实际需求选择合适的方法,可以方便地在 Golang 中完成定时任务的开发。