第六节:channel的遍历和关闭 · Golang · 看云
[TOC]
## **一:channel的关闭**
使用内置函数close可以关闭channel,当channel关闭后,就不能在向channel写入数据了,但是任然可以从该channel读取数据
![](https://img.kancloud.cn/1f/bc/1fbcd67bbb88474346dda823d9eb375a_1209x441.png)
**运行结果**
```
panic: send on closed channel
goroutine 1 [running]:
main.main()
/Users/wang/go/src/awesomeProject/lianxi/main/channel_demo10_lianxi06.go:11 +0xb5
```
很显然不能写入了,报了panic: send on closed channel
**下面我们尝试读取**
![](https://img.kancloud.cn/31/ab/31aba77ac694bfe441241856e4bbcd6a_1209x526.png)
**运行结果**
```
sum = 1000
sum1 = 100
```
<br>
<br>
## **二:channel的遍历**
channel支持for——range的方式进行遍历,请注意两个细节
* 在遍历时,如果channel没有关闭,则回出现deadlock的错误
* 在遍历时,如果channel已经关闭,则会正常遍历数据,遍历完后,就会退出遍历。
![](https://img.kancloud.cn/2a/9e/2a9e995b3e368ceb50535ebee6bc5308_1209x484.png)