golang channel 使用技巧 重要特性

channel 概念

channel 是一个通道,用于端到端的数据传输,这有点像我们平常使用的消息队列,只不过 channel 的发送方和接受方是 goroutine 对象,属于内存级别的通信。

 //无缓冲 channel
ch := make(chan int)
 //有缓冲 channel 第二个参数表示 channel 可缓冲数据的容量。channel里的元素大于可缓冲容量会阻塞
 ch := make(chan int, 2)

重要特性

  • 给一个 nil channel 发送数据,造成永远阻塞
  • 从一个 nil channel 接收数据,造成永远阻塞
  • 给一个已经关闭的 channel 发送数据,引起 panic
  • 从一个已经关闭的 channel 接收数据,如果缓冲区中为空,则返回一个零值
  • 无缓冲的channel是同步的,而有缓冲的channel是非同步的

你可能感兴趣的:(golang,golang,开发语言,后端)