28 lines
762 B
Go
28 lines
762 B
Go
// 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)
|
|
}
|