标签:after ret 一个 时间 highlight port turn 创建 结束
package main
import (
"time"
"fmt"
)
func main() {
/*
1. func NewTimer(d Duration) *Timer
创建一个计时器,d时间以后触发
*/
timer := time.NewTimer(3 *time.Second) //3秒
fmt.Printf("%T\n",timer) //*time.Timer
fmt.Println(time.Now()) //2019-08-15 11:32:17.065452 +0800 CST m=+0.000614404
//此处等待channel中的数值,会阻塞3秒
ch2 := timer.C
//3秒之后的时间
fmt.Println(<-ch2 ) //2019-08-15 11:32:20.068101 +0800 CST m=+3.003327715
//新建一个计时器
timer2 := time.NewTimer(5*time.Second)
//开始goroutine,来处理触发后的事件
go func() {
<- timer2.C
//5秒之后打印下面的
fmt.Println("Timer 2 结束了。。。开始。。。。")
}()
//取消计时器
time.Sleep(3*time.Second)
flag := timer2.Stop()
if flag{
fmt.Println("Timer 2 停止了。。。")
}
}
package main
import (
"time"
"fmt"
)
func main() {
/*
2. func After(d Duration) <-chan Time
返回一个通道:chan,存储的是d时间间隔之后的当前时间
相当于:return NewTimer(d).C
*/
ch := time.After(3 *time.Second)
fmt.Printf("%T\n",ch) //<-chan time.Time
fmt.Println(time.Now()) //2019-08-15 11:43:33.941039 +0800 CST m=+0.000537462
time2 := <-ch
fmt.Println(time2) //2019-08-15 11:43:36.945775 +0800 CST m=+3.005338577
}
标签:after ret 一个 时间 highlight port turn 创建 结束
原文地址:https://www.cnblogs.com/yzg-14/p/12254565.html