Goで繰り返しバックグラウンドタスクを実行する方法はありますか? 私はTimer.schedule(task, delay, period)
Javaのようなものを考えています。ゴルーチンと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)
}