定时器: time.Timer
Timer是一个定时器, 代表未来的一个单一事件, 你可以告诉timer你要等待多长时间, 它提供一个channel, 在将来的那个时间那个channel提供了一个时间值。
package main
import (
"fmt"
"time"
)
func main() {
//创建定时器, 2秒后, 定时器就会向自己的C字节发送一个time.Time类型的元素值
timer1 := time.NewTimer(time.Second * 2)
t1 := time.Now() //当前时间
fmt.Printf("t1: %v\n", t1) //显示当前时间
//2s后, 往timer1.C写数据, 有数据后, 就可以读取
t2 := <-timer1.C //读取数据
fmt.Printf("t2: %v\n", t2)
//如果只是想单纯的等待的话, 可以使用time.Sleep来实现
timer2 := time.NewTimer(time.Second * 2)
<-timer2.C
fmt.Println("2s后")
time.Sleep(time.Second * 2)
fmt.Println("再一次2s后")
<-time.After(time.Second * 2) //定时2s, 阻塞2s, 2s后产生一个事件, 往channel写内容
fmt.Println("再在一次2s后")
timer3 := time.NewTimer(time.Second)
go func() {
<-timer3.C
fmt.Println("Timer 3 expired")
}()
stop := timer3.Stop() //停止定时器
if stop {
fmt.Println("Timer 3 stopped")
}
fmt.Println("before")
timer4 := time.NewTimer(time.Second * 3) //原来设置3s
timer4.Reset(time.Second * 1) //重新设置时间
<-timer4.C
fmt.Println("after")
}