มีวิธีการทำงานพื้นหลังซ้ำ ๆ ใน 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)
}
t := time.Tick(time.Duration(period) * time.Second)
ช่วงเวลาที่เป็นint