golang_定时器: time包中Ticker类型函数的用法介绍

版权声明:版权声明:本文为博主原创文章,转载请附上博文链接! 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
		}
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_43851310/article/details/87885482