golangでチャネルが閉じられているかどうかを確認する方法

リリース: 2020-01-13 09:31:45
オリジナル
9268 人が閲覧しました

golangでチャネルが閉じられているかどうかを確認する方法

Map は、キーと値のペアの順序付けされていないコレクションです。 Map の最も重要な点は、キーを通じてデータを迅速に取得することです。キーはインデックスに似ており、データの値を指します。

Map はコレクションであるため、配列やスライスと同じように反復処理できます。ただし、Map はハッシュ テーブルを使用して実装されているため、Map には順序がなく、返される順序を決定できません。

golang でチャネルが閉じられているかどうかを判断する方法を見てみましょう:

チャネルを読み取るときに、チャネルが閉じられているかどうかを判断します

#,ok := <-jobs

現時点でチャンネルがクローズされている場合、ok の値は false になります。

チャンネルがクローズされているかどうかを判断します。チャネルへの書き込み時に閉じられています

1._,ok := <- jobs

この時点でチャネルが閉じられている場合、OK値は false です。チャネルが閉じられていない場合は、1 つが失われます。job

2. select メソッド

を使用して、タイムアウトと呼ばれる別のチャネルを作成します。タイムアウトになり、このチャネルに true を送信すると、プロデューサーはジョブのチャネルにデータを送信します。select を使用してタイムアウトを監視し、タイムアウトになった場合はジョブ チャネルを閉じます。

go func() {
 time.Sleep(time.Second * 3)
 timeout <- true
 }()
ログイン後にコピー
go func() {
 for i := 0; ; i++ {
 select {
     case <-timeout:
         close(jobs)
         return
 
     default:
         jobs <- i
         fmt.Println("produce:", i)
         }
     }
 }()
ログイン後にコピー

Golang の詳細については、こちらをご覧ください。 、PHP 中国語 Web サイトの golang チュートリアル 列に注目してください。

以上がgolangでチャネルが閉じられているかどうかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!