go range time.tick

发布时间 2023-08-04 15:22:47作者: 北方Cc
func case1() {
	for range time.Tick(5 * time.Second) {
		fmt.Println("start")
		doFuc()
		fmt.Println("end")
	}
}

doFuc的内容如果超过了5s,在这个time周期无法完成,第二次time.Tick就会到来,但是doFunc是不会重入的。但是doFuc运行完成后会接着进入下一轮循环
初步了解原理(没有验证 8.4 ),这是一个无缓冲chan,doFuc没有完成前,chan内容无法取出,下次time.Tick会被阻塞,直到doFuc完成