go怎么实现延迟任务执行 main函数执行后 直接退出了 在main函数里面是有select{}可以实现执行完后在退出 ,但是实际项目应用中肯定不能这样做,例如执行一个每20秒执行一个任务 应该怎么做
func main() { //go timer1() //timer2() for i :=1; i <10 ; i++ { task :=&Task{i+1,"a",""} task.Start() } } type Task struct { delay int key string data string } func NewTask(delay int,key ,data string) *Task { task :=&Task{ delay:delay, key:key, data:data, } return task } func (task * Task) Start() { go task.run() } func (task * Task) run() { fmt.Println("开始执行") second :=time.Duration(task.delay) timer :=time.NewTicker(second * time.Second) //val:=make(chan string) for { select { case <-timer.C: /*fmt.Println("减去之前:"+string(task.delay)) if(task.delay >0){ task.delay-- fmt.Println(task.delay) } if(task.delay == 0){ fmt.Println("时间到执行回调") Httppost(task.data) timer.Stop() }*/ fmt.Println("时间到执行回调") Httppost(task.data) timer.Stop() } } }
有疑问加站长微信联系(非本文作者)