定时执行

  1. 最简单的定时执行
package main

import (
    "fmt"
    "time"
)

func main() {

    go func() {
        // 创建一个计时器
        timeTickerChan := time.Tick(time.Second * 5)
        for {
            fmt.Println("123")
            <-timeTickerChan
        }
    }()

    fmt.Println(112233)
    //一定要阻止主线程退出定时任务才能有效
    select {}
}
  1. cron定时执行

require github.com/robfig/cron/v3 v3.0.1

package main

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

func main() {
    // 新建一个定时任务对象
    // 根据cron表达式进行时间调度,cron可以精确到秒,大部分表达式格式也是从秒开始。
    //crontab := cron.New()  默认从分开始进行时间调度
    crontab := cron.New(cron.WithSeconds()) //精确到秒
    //定义定时器调用的任务函数
    task := func() {
        fmt.Println("hello world", time.Now())
    }
    //定时任务
    spec := "*/5 * * * * ?" //cron表达式,每五秒一次
    // 添加定时任务,
    crontab.AddFunc(spec, task)
    // 启动定时器
    crontab.Start()
    // 定时任务是另起协程执行的,这里使用 select 简答阻塞.实际开发中需要
    // 根据实际情况进行控制
    select {} //阻塞主线程停止
}