Introduction
This lab aims to test your understanding of buffered channels in Golang.
This tutorial is from open-source community. Access the source code
This lab aims to test your understanding of buffered channels in Golang.
By default, channels in Golang are unbuffered, meaning that they only accept sends if there is a corresponding receive ready to receive the sent value. However, buffered channels accept a limited number of values without a corresponding receiver for those values. In this lab, you are required to create a buffered channel and send values into the channel without a corresponding concurrent receive.
$ go run channel-buffering.go
buffered
channel
There is the full code below:
// By default channels are _unbuffered_, meaning that they
// will only accept sends (`chan <-`) if there is a
// corresponding receive (`<- chan`) ready to receive the
// sent value. _Buffered channels_ accept a limited
// number of values without a corresponding receiver for
// those values.
package main
import "fmt"
func main() {
// Here we `make` a channel of strings buffering up to
// 2 values.
messages := make(chan string, 2)
// Because this channel is buffered, we can send these
// values into the channel without a corresponding
// concurrent receive.
messages <- "buffered"
messages <- "channel"
// Later we can receive these two values as usual.
fmt.Println(<-messages)
fmt.Println(<-messages)
}
In this lab, you have learned how to create a buffered channel in Golang and send values into the channel without a corresponding concurrent receive. This is useful in scenarios where you want to send values to a channel without blocking the sender.