0
点赞
收藏
分享

微信扫一扫

GO+ 通道(Channel)


基础简介

Channel指的是一个管道,管道之间可以进行数据交换,他常用于线程之间的通信,Channel是指针类型的数据,他是和C一样使用make来分配内存的。他的定义语法格式如下:

ch := make(chan int)

这句话的含义是创建一个channel,但是这个channel限定了数据的类型,他只可以是int类型,而channel的另一头也只可以读取int类型的值,属于双向绑定数据类型了。

基础操作

我们可以从channel中读取一个值。

<- ch

从channel中读取一个值,并且保存在变量中。

name := <- ch

我们可以发现一个规律,那就是当channel出现在​​<-​​左边是表示发送,而出现在右边时表示接收。

data := <- a // read from channel a   eg: chan <- //发送数据
a <- data // write to channel a eg: <-cjan// 接收数据

一个通道接受和发送数据的时候默认是阻塞的,阻塞的意思是程序被堵住了。

高级操作

每一个channel有三种操作:

  1. send:表示发送数据。
  2. receive:表示接受数据。
  3. close:表示关闭channel。

channel的状态

channel有三种基本状态:nil(空)、open(开启)、closed(关闭)。每种状态下配合每种操作都有不同的情况。

  1. 当为空的时候,无论是发送还是接受都是阻塞的。
  2. 当为open的时候,无论是发送还是接受都是允许的。
  3. 当为关闭状态的时候比较特殊,你进行发送的时候会直接报错,但是当你接受的时候是可以允许的。


举报

相关推荐

0 条评论