有没有办法在 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)
}