关闭
使用channel内置函数Close(),只能读,不能写,代码如下:
package main
import (
"fmt"
)
func main(){
intChan := make(chan int, 3)
intChan <- 100
intChan <- 200
close(intChan)
//intChan <- 300
//通道已被关闭无法再写入
x , ok := <-intChan
//但是还是可以继续读
fmt.Println(x, ok)
}
遍历
channel不推荐用for循环,因为长度会变化。用for-range的方式,注意:
1)在遍历时,如果channel没有关闭,则会出现deadlock的错误
2)如果channel已经关闭,遍历完后,就会退出遍历
//遍历
intChan2 :=make(chan int, 100)
for i:=0; i<100; i++{
intChan2 <- (i+10)
}
close(intChan2)
//注意
//这边for range只返回一个值
for v := range intChan2{
//如果这边的intChan2没有关闭
//取完了for还一值等,造成死锁
fmt.Println("v= ", v)
}