概念簡介
默認情況下,通道是 無緩衝 的,這意味著隻有對應的接收(`<- chan`)
通道準備好接收時,才允許進行發送(`chan <-`)。可緩存通道
允許在沒有對應接收方的情況下,緩存限定數量的值。
例程代碼
package main
import "fmt"
func main() {
// 這裏我們創建了一個字符串通道,最多允許緩存 2 個值。
messages := make(chan string, 2)
// 由於此通道是緩衝的,因此我們可以將這些值發送到通道中
// 而不需要相應的並發接收。
messages <- "buffered"
messages <- "channel"
// 然後我們可以像前麵一樣接收這兩個值。
fmt.Println(<-messages)
fmt.Println(<-messages)
}
執行&輸出
$ go run channel-buffering.go
buffered
channel
課程導航
學習上一篇:Go語言教程:通道 學習下一篇:Go語言教程:通道同步
相關資料
本例程github源代碼:https://github.com/xg-wang/gobyexample/tree/master/examples/channel-buffering