バッファされたチャネルの空き状況を判断する方法
Go では、バッファされたチャネルにデータを送信するときに、データのブロックや損失を避けるため、チャネルがいっぱいです。バッファーされたチャネルの空き状況を確認する方法は次のとおりです。
デフォルトの Select ステートメント
デフォルトのケースで select ステートメントを使用すると、チャネルにデータを送信できます。いっぱいでない場合:
package main import "fmt" func main() { ch := make(chan int, 1) // Attempt to add a value to the channel select { case ch <- 2: // Only sends if there's space fmt.Println("Value sent successfully") default: fmt.Println("Channel full. Data discarded") } }
チェックなし送信
チャネルの空き状況を判断するもう 1 つの方法は、len(ch) と cap(ch) を使用することです。
if len(ch) == cap(ch) { // Channel may be full, but not guaranteed } else { // Channel not full, but may be by the time you attempt to send }
注:チャネルの非同期的な性質により、比較はチェック後に変更される可能性があります。
以上がデータを送信する前に、バッファされた Go チャネルがいっぱいかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。