go range time.tick
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完成
本文来自博客园,作者:北方Cc,转载请注明原文链接:https://www.cnblogs.com/beifangcc/p/17606026.html

浙公网安备 33010602011771号