Go從入門到精通——帶緩衝的通道
阿新 • • 發佈:2022-05-11
帶緩衝的通道
在無緩衝通道的基礎上,為通道增加一個有限大小的儲存空間形成帶緩衝通道。
帶緩衝通道在傳送時無需等待接收方接收即可完成傳送過程,並且不會發生阻塞,只有當儲存空間滿時,才會發生阻塞。
帶緩衝通道有資料時,接收方將不會發生阻塞,直到通道中沒有資料可讀時,通道將會再讀阻塞。
1、建立帶緩衝通道
格式如下:
通道例項 := make(chan 通道型別, 緩衝大小)
- 通道型別:和無緩衝通道用法一致,影響通道傳送和接收的資料型別。
- 緩衝大小:決定通道最多可以儲存的元素數量。
- 通道例項:被創建出的通道例項。
舉個例子來理解帶緩衝通道的用法,程式碼如下:
package main import "fmt" func main() { //建立一個3個元素緩衝大小的整型通道 ch := make(chan int, 3) //檢視當前通道的大小 fmt.Println(len(ch)) //傳送3個整型元素到通道 ch <- 1 ch <- 2 ch <- 3 //檢視當前通道大小 fmt.Println(len(ch)) }