Go の匿名構造体と空の構造体
[最初の質問: 匿名構造体]
提供したコードの行done <- struct{}{}空の構造体を意味します。空の構造体とは、フィールドを持たない構造体です。これは、シグナリングまたはプレースホルダーとしてよく使用されます。この例では、それが終了したことをウォリアーのゴルーチンに通知するために使用されます。
struct{}{} を囲む括弧は、匿名型を作成するために使用されます。匿名型は、名前なしで宣言された型です。そうすることで、型と変数を同時に宣言できるようになります。
[2 番目の質問: チャネル シグナリングの空の構造体]
_ = range langs { < の行;-done } は、ゴルーチンを同期するために使用されます。すべてのゴルーチンが完了を示すシグナルの送信を完了するまでブロックします。
<-done は、done チャネルから値を受け取り、それらを破棄します。この場合、受信した値は気にしないので、受信した値を使用しないことを示すプレースホルダーとしてアンダースコアを使用します。
この行が必要なのは、プログラムは、続行する前にすべてのゴルーチンが完了するまで待つ必要があります。この行がないと、すべてのゴルーチンが完了する前にプログラムが続行され、予期しない結果やデッドロックが発生する可能性があります。
以上が匿名構造体と空の構造体は Go Routine 同期でどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。