バッファリングされたチャネルは、要素の一時的な保存を可能にしながら、ゴルーチン間の通信の便利な手段を提供します。フロー制御を効果的に管理するには、チャネルに現在存在する要素の数を判断する必要があります。
Go 言語には、len 組み込み関数が用意されています。チャネルを含むさまざまなデータ構造の長さを取得するために使用されます。バッファーされたチャネルのコンテキストでは、len 関数は、チャネル バッファー内で現在読み取られずにキューに入れられている要素の数を返します。
次のコードは、len 関数の使用法を示しています。バッファーされたチャネル内の要素の数を測定するには:
package main import "fmt" func main() { c := make(chan int, 100) // create a buffered channel with a capacity of 100 for i := 0; i < 34; i++ { c <- 0 // send 34 elements to the channel } fmt.Println(len(c)) // print the number of unread elements in the channel }
コードを実行すると、次の出力が生成されます:
34
これにより、チャネルが34 個の要素が含まれています。同時実行性により、測定とアクションの間にプリエンプションが発生する可能性があるため、すべての場合において測定が正確であるとは限らないことに注意することが重要です。
以上がバッファリングされたチャネル内の要素の数はどのようにして決定しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。