channel的循环

king54346 · · 1386 次点击
yudotyang
欢迎关注「Go学堂」,看Go易错集锦
这个是跟无缓冲通道有关系的。在无缓冲通道中,是不能自己生产,自己消费的。因为在无缓冲通道中,有一个生产者发送消息,则需要找到一个消费者消费,这样才能可以。可以将通道更改成缓冲通道就可以了。
#6
更多评论
看看这样能不能实现你的想法,这是单向通道的东西 ```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