ホームページ >バックエンド開発 >Golang >golangでチャネルが閉じられているかどうかを確認する方法

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

尚
オリジナル
2020-01-13 09:31:459347ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。