通道(channel)
在多个goroutine间通信的管道
通道的特性
Go语言中的通道(channel)是一种特殊的类型。
在任何时候,同时只能有一个goroutine访问通道进行发送和获取数据。
goroutine间通过通道就可以通信。
通道像一个传送带或者队列,总是遵循先入先出(First In First Out)的规则,保证收发数据的顺序。
声明通道类型
var通道变量chan通道类型通道类型:通道内的数据类型。
通道变量:保存通道的变量。
chan类型的空值是nil,声明后需要配合make后才能使用。
创建通道
通道是引用类型,需要使用make进行创建。
通道实例 := make(chan数据类型)
ch1 := make(chan int)使用通道发送数据
通道发送数据的格式
通道的发送使用特殊的操作符“<-”
发送将持续阻塞直到数据被接收
把数据往通道中发送时,如果接收方一直都没有接收,那么发送操作将持续阻塞。
使用通道接收数据
通道接收同样使用“<-”操作符
特性:
通道的收发操作在不同的两个goroutine间进行。
接收将持续阻塞直到发送方发送数据。
每次接收一个元素
最后更新于