默認(rèn)情況下,通道是未緩沖的,意味著如果有相應(yīng)的接收(<- chan)準(zhǔn)備好接收發(fā)送的值,它們將只接受發(fā)送(chan <- )。 緩沖通道接受有限數(shù)量的值,而沒有用于這些值的相應(yīng)接收器。
這里使一個字符串的通道緩沖多達(dá)2個值。因為這個通道被緩沖,所以可以將這些值發(fā)送到通道中,而沒有相應(yīng)的并發(fā)接收。
之后可以照常接收這兩個值。
所有的示例代碼,都放在
F:\worksp\golang目錄下。安裝Go編程環(huán)境請參考:http://www.yiibai.com/go/go_environment.html
channel-buffering.go的完整代碼如下所示 -
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)
}
執(zhí)行上面代碼,將得到以下輸出結(jié)果 -
F:\worksp\golang>go run channel-buffering.go
buffered
channel