Existe-t-il un moyen d'effectuer des tâches répétitives en arrière-plan dans Go? Je pense à quelque chose comme Timer.schedule(task, delay, period)à Java. Je sais que je peux faire ça avec un goroutine et Time.sleep(), mais j'aimerais quelque chose qui s'arrête facilement.
Voici ce que j'ai, mais me semble laid. Existe-t-il un moyen plus propre / meilleur?
func oneWay() {
var f func()
var t *time.Timer
f = func () {
fmt.Println("doing stuff")
t = time.AfterFunc(time.Duration(5) * time.Second, f)
}
t = time.AfterFunc(time.Duration(5) * time.Second, f)
defer t.Stop()
//simulate doing stuff
time.Sleep(time.Minute)
}
t := time.Tick(time.Duration(period) * time.Second)où la période est uneint