Có cách nào để thực hiện các tác vụ nền lặp đi lặp lại trong Go không? Tôi đang nghĩ về một cái gì đó giống như Timer.schedule(task, delay, period)
trong Java. Tôi biết tôi có thể làm điều này với một con goroutine và Time.sleep()
, nhưng tôi muốn thứ gì đó dễ dàng dừng lại.
Đây là những gì tôi có, nhưng trông xấu xí đối với tôi. Có cách nào sạch hơn / tốt hơn không?
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)
trong khoảng thời gian là mộtint