Go 通道(chan)關閉和後續讀取操作

2021-08-07 20:00:52 字數 668 閱讀 4187

jobs := make(chan

int,5)

for i :=1; i <4; i++

}close(jobs)

2、讀取關閉的無快取通道:

讀取關閉後的無快取通道,不管通道中是否有資料,返回值都為0和false。

done := make(chan

int)

gofunc() ()

close(done)

for i :=1; i <=3; i++

執行結果:

1:0 false

2:0 false

3:0 false

3、讀取關閉的有快取通道:

讀取關閉後的有快取通道,將快取資料讀取完後,再讀取返回值為0和false。

done := make(chan

int,1)

gofunc() ()

close(done)

for i :=1; i <=3; i++

執行結果:

1:1 true

2:0 false

3:0 false

4、range遍歷通道:

通道寫完後,必須關閉通道,否則range遍歷會出現死鎖。

GO 通道的關閉

並不是往通道裡放多少次資料,就必須取多次少資料的 之前的例子都是放3次取3次,放10次取10次 我們可以做乙個操作,當子協程沒有新放入的時候,主協程不再去取,這就是關閉通道 package main import fmt channel並不像檔案那樣需要經常去關閉它,只有當你確實沒有任何傳送資料了,...

go基礎之Goroutines和Channels

在go語言中,每乙個併發的執行單元叫作乙個goroutine。當乙個程式啟動時,其主函式即在乙個單獨的goroutine中執行,我們叫它main goroutine。新 的goroutine會用go語句來建立。在語法上,go語句是乙個普通的函式或方法呼叫前加上關鍵 字go。go語句會使其語句中的函式...

Go從入門到精通 關閉通道後繼續使用通道

通道是乙個引用物件,和 map 類似。map 在沒有任何外部引用時 go 程式在執行 runtime 會自動對記憶體進行垃圾 garbage collection,gc 類似的,通道也可以被垃圾 但是通道也可以被主動關閉的。使用 close 來關閉乙個通道 close ch 關閉的通道依然可以被訪問...