Go 并发:Channel 通道
在上一篇文章《Go 并发机制:Goroutine》中,我们讨论了 Go 如何使用 goroutine 实现并发。本文我们继续讨论 goroutine 如何利用 channel 来进行通信。
什么是 channel
Channel,通道,可看作是 goroutine 进行通信的管道(pipe)。跟水可以在管道中从一端流向另一端类似,数据也可以通过通道从一端发送,从另一端接收。
声明 channel
每一个通道都有一个具体的类型,即这个通道允许传输的数据类型。
1 | ch T |
一个类型为 T
的通道。
通道的零值为 nil
,可以使用 make
来定义通道。例如:
1 | package main |
上面的程序中,首先声明了 a
通道,且a
通道的类型为 int
。由于 a
通道开始的值为 nil
,接下来进行通道的定义。
运行程序,输出: