1. 程式人生 > 其它 >Go從入門到精通——帶緩衝的通道

Go從入門到精通——帶緩衝的通道

帶緩衝的通道

  在無緩衝通道的基礎上,為通道增加一個有限大小的儲存空間形成帶緩衝通道。

  帶緩衝通道在傳送時無需等待接收方接收即可完成傳送過程,並且不會發生阻塞,只有當儲存空間滿時,才會發生阻塞。

  帶緩衝通道有資料時,接收方將不會發生阻塞,直到通道中沒有資料可讀時,通道將會再讀阻塞。

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))
}