亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從一些遺漏的單詞或單詞中澄清 Go 頻道教程

從一些遺漏的單詞或單詞中澄清 Go 頻道教程

Go
繁花如伊 2023-02-06 19:36:54
關于頻道的Go 教程頁面似乎缺少一個詞或只是沒有被編輯。我不知道關于通過渠道發送和接收應該說些什么。默認情況下,發送和接收阻塞,直到另一方準備就緒。blockGo 中有什么東西嗎?我以前沒見過。block被用作名詞嗎?我試著尋找澄清。唯一具有類似措辭的其他頁面是educative.io此外,默認情況下,通道發送和接收直到另一方準備好但這沒有意義。他們的意思是:通道發送和接收不管對方是否準備好?這不覺得很浪費嗎?或者上面的陳述中是否缺少“不要”?
查看完整描述

1 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

“阻塞”意味著 goroutine 將等待。你可以這樣寫:

默認情況下,發送和接收等到對方準備好。

“塊”只是對此的正常術語。它不特定于 Go。可以以非阻塞方式在 Go 中使用通道:

  1. 您可以創建帶緩沖區的通道。只要緩沖區中有空間,寫入就是非阻塞的(但如果緩沖區已滿,它將阻塞)。只要緩沖區中有數據,讀取就是非阻塞的(但如果緩沖區為空,它將阻塞)。

  2. 您可以使用select帶有default分支的語句。

var readch chan int

var writech chan int

var value int

select {

case n := <- readch:

    // Received data.

case writech <- value:

    // Sent data.

default:

    // Didn't send or receive data.

}

在這段代碼中,goroutine 將轉到default分支,而不是阻塞(等待)。


查看完整回答
反對 回復 2023-02-06
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號