![ read chan by for range in main-thread.png](https://static.studygolang.com/190217/615aabb98cdf18b6e24423e6c25969a5.png)
多谢回答,现在明白些了, 另外我问一下,
1.range方式读取chan , 如果不手动close掉chan ,对于range来说,他会一直读取chan是吗? 我尝试过读取
`
ch := make(chan int)
for n:= range ch{
fmt.Println(n)
}
`
这样是会报错的。
2. 我能简单的把go协程理解成线程安全的队列吗?
#7
更多评论
@waini1110</a>
#### 首先感谢回答,另外:
##### 对于读取来说应该是发现channel有数据就拿 ,没有数据就阻塞
##### 对于发送来说向channel中存,存完阻塞,等待channel数据被取走后再存
##### 现在我在main中不断读取channel, 假设channel不存在数据,他应该只是阻塞状态,为什么会提示 all goroutines are asleep - deadlock
#2