func main() { require:=make(chan int,5) for i:=0;i<5;i++{ require<-i } close(require) //设置定时器控制读取速率
ti:=time.Tick(time.Duration(1)*time.Second) //直接range只会读取值,缓冲区无数据会读取默认零值,chan关闭,则退出range
for i:=range require{ <-ti fmt.Printf("i: %d time: %v\n",i,time.Now()) } }
简单的demo,具体的channel原理可参考其他博客。