Golang 的无缓冲通道和有缓冲通道

声明通道

package main

func main() {
  /*
  //无缓冲整型通道
  unbuffered := make(chan int)
  //有缓冲字符串通道
  buffered := make(chan string,10)

  //向通道发送值 <- 在通道右侧
  buffered <- "Gopher"
  //从通道接受值 <- 在通道左侧
  value := <- buffered
  */
}

无缓冲通道

顾名思义,无缓冲通道没有保存通道的值的能力,但是它可以保证同时交换数据。也就接受或者取值如果不同步进行则会发生阻塞。利用这个特性我们可以实现业务通信等场景

有缓冲通道

阻塞场景是只有通道中取值的时候没有值或者通道中的值已经满了。满足这两种条件才会发生阻塞。

总结:通道提供了一种再两个goroutine之间共享数据的简单办法!

posted @ 2022-05-31 23:59  青柚  阅读(197)  评论(0编辑  收藏  举报