Go プログラミング言語 の第 8 章には、次のステートメントがあります。同時実行エコーサーバーについて作成:
go によって開始された関数の引数は、go の実行時に評価されます。ステートメント自体が実行されます。したがって、input.Text() はメインの goroutine で評価されます。
このステートメントは、go ステートメントが実行されると、input.Text() 関数が直ちに評価され、その結果が go echo に渡されることを意味します。 () ゴルーチン。これは、関数の呼び出し時に関数の引数が評価され、その結果が呼び出された関数に渡される通常の関数呼び出しとは対照的です。
この違いの理由は、go ステートメントが新しい関数を開始することです。 goroutine、および goroutine はメインの goroutine と同時に実行されます。 go によって開始された関数の引数が関数の呼び出し時に評価された場合、メインの goroutine は、新しい goroutine を開始する前に関数が完了するまで待機する必要があります。これは、並行性を有効にするというゴルーチンを使用する目的を無効にしてしまいます。
go ステートメント自体の実行時に go によって開始された関数の引数を評価することにより、メインのゴルーチンは関数を待つ必要がなくなります。完了します。これにより、ゴルーチンを同時に開始できるようになり、これは望ましい動作です。
以上が「go」ステートメントを使用するときにメインのゴルーチンで「input.Text()」が評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。