通道是一种带类型的通路,你可以通过它使用通道操作符 <- 发送和接收值。
<-
ch <- v // 将 v 发送到通道 ch。 v := <-ch // 从 ch 接收,并 // 将值赋给 v。
(数据沿箭头方向流动。)
与映射和切片一样,通道在使用前必须先创建:
ch := make(chan int)
默认情况下,发送和接收操作会一直阻塞,直到另一端准备就绪。这使得 goroutines 无需显式使用锁或条件变量即可完成同步。
示例代码对一个切片中的数字求和,并将工作分配给两个 goroutines。 当两个 goroutines 都完成计算后,它会计算最终结果。