Anonyme Struktur und leere Struktur
In Go ist eine anonyme Struktur eine Struktur, die keinen Namen hat. Es wird typischerweise zum Erstellen temporärer oder kurzlebiger Datenstrukturen verwendet. Eine leere Struktur hat keine Felder und belegt null Bytes Speicher.
[1. Frage]
Der folgende Code verwendet eine anonyme Struktur, um zu signalisieren, dass ein Krieger den Kampf beendet hat :
done := make(chan struct{})
Der Typ struct{} stellt eine leere Struktur dar. Es wird hier verwendet, weil wir keine Daten in der Struktur speichern müssen. Wir wollen es nur verwenden, um zu signalisieren, dass ein Krieger den Kampf beendet hat.
Die folgende Zeile sendet die leere Struktur an den Fertig-Kanal:
done <- struct{}{}
Die zusätzlichen Klammern sind erforderlich, da das < ; und > Operatoren haben eine niedrigere Priorität als der <-Operator. Ohne die Klammern würde der Code als erledigt <- (struct{}) {} interpretiert werden, wodurch ein Zeiger auf eine leere Struktur anstelle einer leeren Struktur selbst gesendet würde.
[2. Frage ]
Die folgende Zeile wartet darauf, dass alle Krieger den Kampf beenden:
for _ = range langs { <-done }
Diese Zeile verwendet einen Bereichsausdruck vom fertigen Kanal zu empfangen. Das Zeichen _ wird als Platzhaltervariable verwendet, um anzuzeigen, dass uns der empfangene Wert egal ist. Dies liegt daran, dass die von den Kriegern gesendete leere Struktur keine Daten enthält.
Der Bereichsausdruck ist notwendig, da er es dem Programm ermöglicht, zu warten, bis alle Krieger den Kampf beendet haben, bevor es fortfährt. Ohne sie würde das Programm nur warten, bis der erste Krieger den Kampf beendet hat, bevor es fortfährt.
Das obige ist der detaillierte Inhalt vonWas sind anonyme Strukturen und leere Strukturen in Go und wie werden sie zur Signalisierung verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!