首页 > 其他 > 详细

golang之channel基础

时间:2020-06-12 23:36:46      阅读:57      评论:0      收藏:0      [点我收藏+]

创建:

ch:=make(chan int)//make会创建有地址并被赋予默认值的channel
ch<-1//写入  写端写数据,读端不在读,写端阻塞
c<-ch//读出  读端读数据,写端不在写,读端阻塞
len(ch)//剩余未读取数据个数
cap(ch)//通道的容量

无缓冲channel------同步通信

ch:=make(chan int)
ch:=make(chan int,0)//或 通道容量为0 不能存储数据

有缓冲channel------异步通信

ch:=make(chan int,10)//创建容量为10的channel

关闭channel
确定不在向对端发送、接收数据 使用close(ch)关闭
对端可以判断是否关闭:
if num,ok:=<-ch;ok==true{ ok-->false//已经关闭,num没数据 ok-->true//没有关闭,num保存读到的数据 }
可以用range代替??
for num:=range ch{ //ch不能替换为<-ch }
1.数据不发送完不应该关闭
2.已关闭的channel不能向其写入数据
3.写端已经关闭channel,可以从中读取数据
读无缓冲channel:读到0----写端关闭
读有缓冲channel:如果缓冲区有数据,先读数据,读完数据后可以继续读,知道读到0

golang之channel基础

原文:https://www.cnblogs.com/la-vie-cd/p/13110913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!