下圖清楚解釋非緩衝Unbuffered Channels
和 緩衝buffered Channels
差別,
兩個Goroutine一次只能交換一筆資料,交換的同時過程鎖定,直到交換結束。
channel增加具有容量,兩個 Goroutine可同時接收與發送資料。
buffered Channel宣告方式如下,和Channel方式一樣,但增加了緩衝值:
c := make(chan 資料型別,num)//num緩衝值
程式範例:
package main
import "fmt"
func main() {
messages := make(chan string, 2)
messages <- "A"
messages <- "B"
fmt.Println(<-messages)
fmt.Println(<-messages)
}
輸出結果:
A
B