Gibt es eine Möglichkeit, sich wiederholende Hintergrundaufgaben in Go auszuführen? Ich denke an so etwas wie Timer.schedule(task, delay, period)
in Java. Ich weiß, dass ich das mit einer Goroutine machen kann und Time.sleep()
, aber ich möchte etwas, das leicht zu stoppen ist.
Folgendes habe ich bekommen, sehe aber für mich hässlich aus. Gibt es einen saubereren / besseren Weg?
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)
wo Zeitraum ist einint