定義定時器
func callByTimeID(timerId string, tick time.Duration,callback func()) {
ticker := time.NewTicker(time.Second)
defer ticker.Stop()
done := make(chan bool)
go func() {
time.Sleep(tick)
done <- true
}()
for {
select {
case <-done:
fmt.Println("Done!")
callback()
return
case t := <-ticker.C:
fmt.Println(fmt.Sprintf("TimerId:%s,Date: %v-%v-%v Time: %v:%v:%v",
timerId,t.Year(),t.Month(),t.Day(),t.Hour(),t.Minute(),t.Second()))
}
}
}
使用定時器:
func TickDemo() {
fmt.Println("Time Tick Test.")
}
func main() {
callByTimeID("GAME_BEGIN_CLOCK",5 * time.Second,TickDemo)
}
輸出:
TimerId:GAME_BEGIN_CLOCK,Date: 2021-September-9 Time: 15:31:55
TimerId:GAME_BEGIN_CLOCK,Date: 2021-September-9 Time: 15:31:56
TimerId:GAME_BEGIN_CLOCK,Date: 2021-September-9 Time: 15:31:57
TimerId:GAME_BEGIN_CLOCK,Date: 2021-September-9 Time: 15:31:58
TimerId:GAME_BEGIN_CLOCK,Date: 2021-September-9 Time: 15:31:59
Done!
Time Tick Test.