channel分为有缓冲和无缓冲channel
1.有缓冲channel的遍历
方式1.range方式,遍历完之后会推出循环
package main
import (
"fmt"
"time"
)
var c =make(chan int,10)
func main(){
go func(){
for i:=0;i<10;i++{
c<-i
// fmt.Println("PUT:",i)
}
}()
go func(){
for v:=range c{
fmt.Println("Get:",v)
}
}()
time.Sleep(time.Microsecond)
}
2,通过 v,ok:=<-c,ok在channel的元素取完或者channel被关闭时变成false,通过这种方式也能遍历channel
package main
import (
"fmt"
"time"
)
var c =make(chan int,10)
func main(){
go func(){
for i:=0;i<10;i++{
c<-i
// fmt.Println("PUT:",i)
}
}()
go func(){
for {
v,ok:=<-c
if !ok{
break
}
fmt.Println("获得:",v)
}
}()
time.Sleep(time.Microsecond)
}