/**
channel 不像文件一样需要经常去关闭,只有当你确定没有任何发送数据了,或者你想显式的结束range
循环之类的,才去关闭channel.
关闭channel后,无法再向channel发送数据,否则引起panic
关闭channel后,可以继续接收数据
对于nil channel 无论收发都会被阻塞
*/
package main
import (
"fmt"
)
func main(){
//创建一个无缓存的channel
ch:=make(chan int)
//新建一个goroutine
go func(){
for i:=0;i<5;i++{
ch <- i //往通道写数据
}
close(ch)//关闭后无法在发送数据
//ch<-88
}()//别忘了()
for{
if num,ok:=<-ch;ok==true{
fmt.Println("取到值=",num)
}else{//管道关闭
fmt.Println("管道关闭!!!")
break
}
}
/**
输出:
F:\goWorkSpace\study\05协程>go run 14_关闭channel.go
取到值= 0
取到值= 1
取到值= 2
取到值= 3
取到值= 4
管道关闭!
*/
}
5.14 go 关闭channel
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105374477
今日推荐
周排行