「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 「go」ステートメントを使用すると、メインのゴルーチンで「input.Text()」が評価されるのはなぜですか?

「go」ステートメントを使用すると、メインのゴルーチンで「input.Text()」が評価されるのはなぜですか?

2024 年 11 月 20 日に公開
ブラウズ:586

Why is `input.Text()` Evaluated in the Main Goroutine When Using `go` Statements?

なぜ input.Text() が Main Goroutine で評価されるのか

Go プログラミング言語 の第 8 章には、次のステートメントがあります。同時実行エコー サーバーについては次のとおりです。

go によって開始される関数の引数は、go ステートメント自体が実行されるときに評価されます。したがって、input.Text() はメインの goroutine で評価されます。

このステートメントは、go ステートメントが実行されると、input.Text() 関数が直ちに評価され、その結果が go echo に渡されることを意味します。 () ゴルーチン。これは、関数が呼び出されたときに関数の引数が評価され、その結果が呼び出された関数に渡される通常の関数呼び出しとは対照的です。

この違いの理由は、go ステートメントが新しい関数を開始することです。 goroutine、および goroutine はメインの goroutine と同時に実行されます。 go によって開始された関数の引数が関数の呼び出し時に評価された場合、メインの goroutine は、新しい goroutine を開始する前に関数が完了するまで待機する必要があります。これは、並行性を有効にするというゴルーチンを使用する目的を損なうことになります。

go ステートメント自体の実行時に go によって開始された関数の引数を評価することにより、メインのゴルーチンは関数を待つ必要がなくなります。完了します。これにより、ゴルーチンを同時に開始できるようになり、これは望ましい動作です。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3