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)
}

posted on 2020-12-18 00:33  孤灯引路人  阅读(84)  评论(0编辑  收藏  举报

导航