``` golang?linenums
package main
import "fmt"
func main() {
ch := make(chan int)
for i := 0; i < 10; i++ {
select {
case x:=<-ch:
fmt.Println(x)
case ch <- i:
fmt.Println(i)
}
}
}
```
- 请问这段代码,为什么运行不了呢?无缓冲的channel遇到select会发生什么?
<a href="/user/mortemnh" title="@mortemnh">@mortemnh</a> 说的是对的,ch 是无缓冲 `channel`,执行到 `ch <- i` 之后,如果没有接收方取值就会一直阻塞在这里,无法进入下次 `for` 循环。
#5
更多评论