Есть ли способ сделать повторяющиеся фоновые задачи в Go? Я думаю о чем-то вроде Timer.schedule(task, delay, period)
в Java. Я знаю, что могу сделать это с помощью goroutine и Time.sleep()
, но мне бы хотелось что-то, что легко остановилось.
Вот что я получил, но выглядит уродливо для меня. Есть ли более чистый/лучший способ?
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)
}