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原理可参考其他博客。
原文:https://www.cnblogs.com/9527s/p/14234109.html