golang-Channels

Golang–Channels(通道)

一. 通道创建

以最简单方式调用make函数创建的是一个无缓存的channel,但是我们也可以指定第二个整型参数,对应channel的容量。如果channel的容量大于零,那么该channel就是带缓存 channel。
channel 容量 > 0 即带有缓冲的通道

1
2
3
4
5
6
7
 // 创建无缓冲的的通道
ch := make(chan int)
ch1 := make(chan int, 0)

// 创建有缓冲的通道
ch := make(chan int, 1)
ch1 := make(chan int, 3)

二. 通道发送和接收

1
2
3
4
5
6
//  发送数据到通道
ch := make(chan int)
ch <- 1

// 从通道中接收数据
<- ch

三. 通道的箭头使用, 注意点。

  1. chan <- int 只发送int 的channel, 只能发送不能接收。
  2. <- chan int 表示一个只接收int 的int channel, 只能接收不能发送。
  3. 箭头 <- 和关键字chan 的相对位置表明了channel 的方向。
  4. 这种限制将在编译期检测。