channel的循环

king54346 · · 1364 次点击
ints 是无缓冲通道, 协程A会阻塞在 X <- i +1,。 要么一个协程写,一个协程读;要么改成有缓冲通道
#4
更多评论
看看这样能不能实现你的想法,这是单向通道的东西 ```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
channel的读取必须成对出现
#2