Existe uma maneira de executar tarefas repetitivas em segundo plano no Go? Estou pensando em algo como Timer.schedule(task, delay, period)em Java. Eu sei que posso fazer isso com uma goroutine e Time.sleep(), mas eu gostaria de algo que parasse facilmente.
Aqui está o que eu consegui, mas me parece feio. Existe uma maneira mais limpa / melhor?
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)onde o período é umint