Eintauchen in den Unterschied zwischen struct{}{} und {} in Go
Die anonymen Strukturen von Go bieten eine praktische Möglichkeit, einfache Daten darzustellen Strukturen, ohne einen benannten Typ zu definieren. Die Syntax struct{}{} und {} zum Erstellen solcher Strukturen kann jedoch Fragen zu ihrer Unterscheidung aufwerfen.
Beim Deklarieren einer Zuordnung von Zeichenfolgen zu anonymen Strukturen in Go, wie unten gezeigt:
<code class="go">var Foo = map[string]struct{}{ "foo": struct{}{}, }</code>
IntelliJ Idea gibt möglicherweise eine Warnung „Redundante Typdeklaration“ aus. Um dies zu beheben, kann der folgende Code verwendet werden:
<code class="go">var Foo = map[string]struct{}{ "foo": {}, }</code>
Der Unterschied zwischen den beiden Syntaxen liegt darin, wie der Compiler das unvollständige anonyme Strukturliteral behandelt. In der ersten Syntax, struct{}{}, wird der Typ explizit angegeben, obwohl er anonym ist. In der zweiten Syntax, {}, wird der Typ vollständig weggelassen.
Gemäß der Go-Sprachspezifikation innerhalb eines zusammengesetzten Literals eines Kartentyps, wenn die Typen der Schlüssel und Werte aus dem Kartentyp bekannt sind selbst können sie weggelassen werden, wenn Werte dieser Typen angegeben werden sollen. Dies erklärt, warum der Compiler in diesem Zusammenhang die Typspezifikation für {} nicht benötigt.
Es ist wichtig zu beachten, dass diese Auslassung aufgrund eines Versehens erst ab Go 1.5 gültig ist.
Das obige ist der detaillierte Inhalt vonWann können Sie „struct{}{}' für anonyme Strukturen in Go Maps weglassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!