go管道使用2-协程配合起来使用
管道遍历和协程配合起来使用
package main
import (
"fmt"
"sync"
)
var wg sync.WaitGroup
//创建一个协程
func work(myChan chan int){
for v:=range myChan {
fmt.Println(v*2)
}
defer wg.Done()
}
func main() {
wg.Add(1)
len:=100
myChan:=make(chan int)
//批量向管道添加数据
go work(myChan)
for i:=0;i <len;i ++{
myChan <- i
}
close(myChan)
wg.Wait()
}
一个通道传输数据一个收集数据案例
package main
import (
"fmt"
"time"
)
//创建一个协程
func work(myChan chan int,sumChan chan int){
for v:=range myChan {
num:=v*1
sumChan <-num
}
}
func print(myChan chan int){
for v:=range myChan {
fmt.Println(v)
}
}
func main() {
len:=3
myChan:=make(chan int)
sumChan:=make(chan int)
//批量向管道添加数据
go print(sumChan)
go work(myChan,sumChan)
for i:=0;i <=len;i++{
myChan <- i
}
time.Sleep(1*time.Second)//需要等下否则最后一个不通过
close(myChan)
close(sumChan)
}