Time包详解二-timer和ticket.html
timer 计时器
用于在指定的Duration类型时间后调用函数或计算表达式。
- 如果只是想指定时间之后执行,使用time.Sleep()
- 使用NewTimer(),可以返回的Timer类型在计时器到期之前,取消该计时器
- 直到使用<-timer.C发送一个值,该计时器才会过期
timer1 := time.NewTimer(time.Second * 2)
ticker 断续器
按照指定的周期来调用函数或计算表达式。
- 通常会使用go新开一个线程,否则会
使用时间控制停止ticker
ticker := time.NewTicker(time.Millisecond * 500) go func() { for t := range ticker.C { fmt.Println("Tick at", t) } }() time.Sleep(time.Millisecond * 1500) //阻塞 ticker.Stop() fmt.Println("Ticker stopped")
使用channel控制停止ticker
ticker := time.NewTicker(time.Millisecond * 500) c := make(chan int) go func() { i := 0 for t := range ticker.C { fmt.Println("Tick at", t) i++ if i == 3 { ticker.Stop() break } } c
不开新线程..
func main() { ticker := time.NewTicker(time.Millisecond * 500) i := 0 for t := range ticker.C { //无限循环,直到break fmt.Println("Tick at", t) i++ if i == 3 { ticker.Stop() break } } fmt.Println("Ticker stopped") }