[GO]timer的应用

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!

死锁了。。。。确实是一次性的

posted @ 2018-09-19 17:11  蟒城贝勒爷  阅读(123)  评论(0编辑  收藏  举报