// 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) }