package main
import (
"fmt"
)
func main() {
in := make(chan int, 10)
out := make(chan int)
for i := 0; i < 10; i++ {
in <- i
}
close(in)
go func() {
for {
i, ok := <-in
if !ok {
close(out)
break
}
out <- i * 2 //THIS LINE
}
}()
for v := range out { // AND HERE
fmt.Println(v)
}
}
我对 Go 有点陌生,了解了缓冲通道和无缓冲通道之间的区别,但我不确定这段代码是如何工作的。由于out通道没有缓冲,它不应该造成死锁吗?我错过了什么?
萧十郎
猛跑小猪
相关分类