php エディタ Zimo の紹介: Go 言語では、select ステートメントは非常に重要な制御フロー ステートメントであり、同時実行性を達成するために複数のチャネルの操作を同時に監視するために使用されます。コントロール。 。なぜ選択を待つ必要があるのですか?これは、同時プログラミングでは通常、複数のチャネルからのデータまたはイベントを同時に処理する必要があり、select ステートメントは複数のチャネルを監視するのに役立ちます。いずれかのチャネルが操作可能になると、対応する操作が実行されます。それにより並行性を実現します。 select を使用すると、ブロックを効果的に回避し、プログラムの応答性と同時実行性を向上させることができます。
コンテキストキャンセルについて知りました。 これが私のコードです。
リーリー ###聞きたい###出力を期待しています。
修正コード
package main import ( "fmt" "context" ) func main() { ctx := context.Background() do(ctx) } func do(ctx context.Context) { ctx, ctxCancel := context.WithCancel(ctx) resultCh := make(chan string) go terminate(ctx, resultCh) resultCh <- "value1" resultCh <- "value2" fmt.Println("pre cancel") ctxCancel() fmt.Println("post cancel") } func terminate(ctx context.Context, ch <-chan string) { for { select { case <-ctx.Done(): fmt.Println("terminate") return case result := <-ch: fmt.Println(result) } } }Solution
以上がGo で選択を待つ必要があるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。