A buffered channel is a special type of channel that holds a buffer that contains a number of items. Unlike a regular channel, a buffered channel doesn't block unless the following takes place:
- Its buffer is empty and we are trying to receive a value from the channel.
- Its buffer is full and we are trying to send a value to the channel.
To declare a buffered channel, we use the following syntax:
myBufferedChannel := make(chan int,10)
The preceding syntax creates a buffered channel that can hold 10 int values.
To send a value to the buffered channel, we use the same syntax as with regular channels. Each send operation adds one item to the buffer, as follows:
myBufferedChannel <- 10
To receive a value from a buffered channel, we utilize the same syntax as well. Each receive operation removes one item from the buffer, as follows:
x := <-myBufferedChannel
Let's take a look at the select statement construct in the next section.