匿名構造体と空の構造体
Go では、匿名構造体は名前を持たない構造体です。通常、一時的または短期間のデータ構造を作成するために使用されます。空の構造体にはフィールドがなく、メモリのゼロバイトを占有します。
[1 番目の質問]
次のコードは、匿名の構造体を使用して戦士が戦いを終えたことを示します。 :
done := make(chan struct{})
struct{} タイプは空の構造体を表します。構造体にデータを保存する必要がないため、ここで使用されます。戦士が戦いを終えたことを知らせるためにのみ使用したいと考えています。
次の行は、空の構造体を Done チャネルに送信します。
done <- struct{}{}
< であるため、追加の括弧が必要です。 ;そして>演算子は <- 演算子より優先順位が低くなります。括弧がないと、コードは「done <- (struct{}) {}」と解釈され、空の構造体自体ではなく空の構造体へのポインタが送信されます。
[2 番目の質問] ]
次の行は、すべての戦士が終了するのを待ちますfighting:
for _ = range langs { <-done }
この行では、done チャネルから受信するために範囲式を使用しています。 _ 文字は、受信した値を気にしないことを示すプレースホルダー変数として使用されます。これは、戦士によって送信された空の構造体にはデータが含まれていないためです。
プログラムはすべての戦士が戦闘を終了するまで待機してから続行できるため、範囲式が必要です。これがないと、プログラムは最初の戦士が戦いを終えるのを待ってから続行します。
以上がGo の匿名構造体と空の構造体とは何ですか?また、それらはシグナリングにどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。