go语言之进阶篇单向channel的应用 (生产者,消费者模型)

1、单向channel的应用

示例:

package main

import (
	"fmt"
)

//此通道只能写,不能读
func producer(out chan<- int) {
	for i := 0; i < 10; i++ {
		out <- i * i
	}
	close(out)
}

//此channel只能读,不能写
func consumer(in <-chan int) {
	for num := range in {
		fmt.Println("num = ", num)
	}
}

func main() {
	//创建一个双向通道
	ch := make(chan int)

	//生产者,生产数字,写入channel
	//新开一个协程
	go producer(ch) //channel传参,引用传递

	//消费者,从channel读取内容,打印
	consumer(ch)
}

执行结果:

num =  0
num =  1
num =  4
num =  9
num =  16
num =  25
num =  36
num =  49
num =  64
num =  81

  

 

 

 

 

 

 

 

 

posted @ 2019-01-18 14:34  努力哥  阅读(993)  评论(0编辑  收藏  举报