package main
import (
"fmt"
"time"
)
//1.单向 读通道
//var numChanRand <- chan int
//2.单向 写通道
//var numWriteChan chan <- int
生产消费者模式
//consumer 消费者 提供一个只读通道
//producer 生产者 只提供写的通道
func main() {
// 1.主函数创建一个双向通道 numChan
numChan := make(chan int, 5)
// 2.将numChan 传递给producer 负责生产
go producer(numChan) //双向管道可以赋值给同类型的单向管道,单向不能转双向
// 3.将numChan 传递给consumer 负责消费
go consumer(numChan)
time.Sleep(1 * time.Second)
}
//producer 生产者 提供一个只写的通道
func producer(out chan<- int) {
for i := 0; i < 10; i++ {
out <- i
fmt.Println("写入的数:", i)
}
}
//consumer 消费者 提供一个只读通道
func consumer(in <-chan int) {
//读通道 不允许写数据 in <- 2错误
for v := range in {
fmt.Println("从管道读取数据:", v)
}
}
goroutine模拟:读通道 和写通道的使用
最新推荐文章于 2024-05-28 08:19:42 发布