1.管道遍历有3种方式见下贴图
每种方式都要求没有数据的时候,管道是关闭的,不然试图读取空管道会panic
遍历的本质-循环-go中只有for: [要遍历的对象]+ [遍历出来的东西存放的容器]+ [ 遍历的 条件]
这三种方式,遍历1个管道,我推荐1,一个for中同时遍历多个管道,并使用,我推荐3,好像也只能使用3吧。
当然方式1,2也可以在for外部构建一个容器,每次把每层循环的数据倒那个容器内。总之for出来的数据必须有个容器装;
共同点:都需要反复读-for,读到空的会panic
区别:方式1,2只能在循环体内使用数据,局部变量出了循环,就不认,最关键的,只能同时遍历1个,注意是1个;方式3,比较灵活,循环体内体外皆可使用,最关键的,可以同时遍历多个,注意是多个。
方法3的灵活应用见我写的,https://blog.csdn.net/u013755520/article/details/89552275 go实现归并排序
【一】for v:=range p{//遍历出来的数据,每一层创建一个容器v,v作用域是一层循环,一层结束后释放,下一层再建
fmt.Println(v)//循环的条件是 p中有数据
}
【二】 for{//无条件循环,最后通过break跳出循环 注意循环不会造成栈溢出,因为一层结束后释放本层