c := make(chan int, 10) // channel with a buffer size of 10
缓冲区大小为 10 是什么意思?缓冲区大小具体代表/限制什么?
缓冲区大小是可以在没有发送阻塞的情况下发送到通道的元素数。默认情况下,通道的缓冲区大小为 0(您可以通过 获得make(chan int))。这意味着每次发送都会阻塞,直到另一个 goroutine 从通道接收。缓冲区大小为 1 的通道可以容纳 1 个元素直到发送块,所以你会得到
make(chan int)
c := make(chan int, 1) c <- 1 // doesn't block c <- 2 // blocks until another goroutine receives from the channel