Go how to implement deferred task execution after the main function to exit the in the main function is a select{} can be implemented after execution in the exit, but the actual project application will certainly not do so, such as the execution of a task every 20 seconds to do what should be done
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 ("Start Execution") Second: =time. Duration (task.delay) Timer: =time. Newticker (Second * time. Second)//val:=make (Chan string) for {select {case <-timer. C:/*fmt. Println ("Minus Before:" +string (Task.delay)) if (Task.delay >0) {task.delay--fmt. Println (Task.delay)} if (Task.delay = = 0) {fmt. Println ("Time to execute callback") HttpPost (task.data) timer. Stop ()}*/FMT. Println ("Time to execute callback") HttpPost (task.data) timer. Stop ()}}}181 reads