package main
import (
"fmt"//输出包
)
func main() {
out:=make(chan int)//创建无缓冲通道一个out
go func(){
for i:=0;i<10;i++{
out<-i//把i发送到out通道中去
}
close(out)//全部发送完毕关闭通道out
}()
in:=out//把out通道赋值给in。用于在下一个阶段中处理数据。
out1:=make(chan int)//创建一个新的int类型的无缓冲的通道.用于存储处理后的数据
go func(){
for v:=range in{
out1<-v+6//把in通道内的数据每一个+1赋值给out通道中,
}
close(out1)//全部+1后,关闭out通道.
}()
for v:=range out1{
fmt.Println(v)
}
}
解释:
,可以看到有两个goroutine构成了一个简单的流水线。第一个goroutine负责生成0到9这些数字并发送到out通道中,第二个goroutine接收out通道中的数据,对每个数据加6后发送到out1通道中。最后,在主goroutine中从out1通道读取处理后的数据并打印输出