Czy istnieje sposób na wykonywanie powtarzalnych zadań w tle w Go? Myślę o czymś takim, jak Timer.schedule(task, delay, period)
w Javie. Wiem, że mogę to zrobić za pomocą gorutyny i Time.sleep()
, ale chciałbym coś, co można łatwo zatrzymać.
Oto, co mam, ale dla mnie wygląda brzydko. Czy istnieje czystszy / lepszy sposób?
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)
tam , gdzie okres jestint