package main import ( "time" "fmt" ) func main() { //创建一个定时器,设置时间为2s,2s后,往time.C里写入时间(time的通道) timer := time.NewTimer(2*time.Second) fmt.Println("当前的时间为: ", time.Now()) //2s后,往time.C里写数据,有数据后,就可以读取 t := <-timer.C fmt.Println("t = ", t) }
执行的结果为
当前的时间为: 2018-09-19 17:09:13.8961192 +0800 CST m=+0.001501301 t = 2018-09-19 17:09:15.8964843 +0800 CST m=+2.001866401
timer的触发事件本来就是一次性的,来验证一下
func main() { timer := time.NewTimer(time.Second) for true { <- timer.C fmt.Println("时间到") } }
如果不是一次性的,那么它应该不断的打印"时间到"
执行结果为
时间到
fatal error: all goroutines are asleep - deadlock!
死锁了。。。。确实是一次性的