channel的循环

king54346 · · 1364 次点击
channel的读取必须成对出现
#2
更多评论
看看这样能不能实现你的想法,这是单向通道的东西 ```go func test1(ch chan<- int) { for i := 1; i <= 5; i++ { ch <- i } close(ch) } func test2(ch chan<- int, ch1 <-chan int) { for v := range ch1 { ch <- v } close(ch) } func test3(ch <-chan int) { for v := range ch { fmt.Println(v) } } func main() { ch1 := make(chan int) ch2 := make(chan int) go test1(ch1) go test2(ch2, ch1) test3(ch2) } ```
#1
不是必须成对出现的,`chan` 的写入读取可以当成生产消费来理解, 当生产者生产的数据总量不会超过`chan`的缓冲区,可以不需要消费者
#3