版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87885482
Ticker
type Ticker struct { C <-chan Time // 周期性传递时间信息的通道 // 内含隐藏或非导出字段 }
Ticker保管一个通道,并每隔一段时间向其传递"tick"。
创建时钟周期:time.NewTicker()
func NewTicker(d Duration) *Ticker
NewTicker返回一个新的Ticker,该Ticker包含一个通道字段,并会每隔时间段d就向该通道发送当时的时间。它会调整时间间隔或者丢弃tick信息以适应反应慢的接收者。如果d<=0会panic。关闭该Ticker可以释放相关资源。
应用:打印每隔1秒打印1次"Golang",一共打印3次
func main() {
myTicker:=time.NewTicker(time.Second) //定义时钟周期,每隔1秒写入时间
i:=0 //记录次数
for {
<-myTicker.C //阻塞,形成间隔
i++
fmt.Println("Golang")
if i==3{
myTicker.Stop()
break
}
}
}
通过定时器也可以实现时钟周期的效果:
func main() {
for {
myTimer:=time.NewTimer(time.Second*1)
<-myTimer.C
fmt.Println("Golang")
}
}
拓展: 在11点35分打印"Golang"
func main() {
myTicker:=time.NewTicker(time.Second) //设置时间周期
for{
nowTime:=<-myTicker.C //当前时间
if nowTime.Hour()==11 && nowTime.Minute()==35{
fmt.Println("Golang")
break
}
}
}