Go による例: チャネルバッファリング

既定ではチャネルはバッファリングされないため、送信された値を受信する準備ができた受信 (<- chan) が存在する場合に限り、送信 (chan <-) は許可されます. バッファリングされたチャネルはそれらの値の受信側がなくても、限られた数の値を受信します.

package main
import "fmt"
func main() {

ここでは、最大 2 つの値をバッファリングする文字列のチャネルをmakeします.

    messages := make(chan string, 2)

このチャネルはバッファリングされているため、対応する同時受信がなくても、これらの値をチャネルに送信できます.

    messages <- "buffered"
    messages <- "channel"

後で、これらの 2 つの値を普段どおり受信できます.

    fmt.Println(<-messages)
    fmt.Println(<-messages)
}
$ go run channel-buffering.go 
buffered
channel

次の例: チャネル同期.