Anonyme Strukturen in Go: Wann sollte man „struct{}{} vs. {}' verwenden?

Linda Hamilton
Freigeben: 2024-11-02 07:01:02
Original
385 Leute haben es durchsucht

 Anonymous Structs in Go: When to Use `struct{}{} vs. {}`?

Den Unterschied zwischen struct{}{} und {} in anonymen Strukturen verstehen

In Go können Karten Zeichenfolgen mit benutzerdefinierten anonymen Strukturen verknüpfen. Die Deklaration einer solchen Karte kann in IDEs wie Gogland eine Warnung „Redundante Typdeklaration“ auslösen. Dies wirft die Frage nach dem Unterschied zwischen struct{}{}- und {}-Deklarationen auf.

Syntaxerklärung

Die struct{}{}-Syntax stellt ein zusammengesetztes Literal dar enthält sowohl den Typ (struct{}) als auch den Wert ({}). Andererseits ist {} auch ein zusammengesetztes Literal, aber es lässt den Typ weg.

Compiler-Auswirkungen

Im Allgemeinen erfordern zusammengesetzte Literale die Angabe des Typs . Beim Deklarieren von Karten werden die Schlüssel- und Werttypen jedoch vom Kartentyp abgeleitet. Daher können Sie den Typ weglassen, wenn Sie zusammengesetzte Literalwerte zuweisen, wenn diese mit diesen abgeleiteten Typen übereinstimmen.

Diese Ausnahme wurde in Go 1.5 gemäß der Spezifikation für zusammengesetzte Literale eingeführt. Dadurch entfällt die Notwendigkeit, den Typ in bestimmten Situationen explizit anzugeben, was den Code vereinfacht.

Betrachten Sie zur Veranschaulichung die folgende anonyme Strukturzuweisung:

<code class="go">var Foo = map[string]struct{}{
    "foo": struct{}{},
}</code>
Nach dem Login kopieren

Gogland warnt möglicherweise vor der redundanten Typdeklaration. Sie können es mit der folgenden Syntax lösen:

<code class="go">var Foo = map[string]struct{}{
    "foo": {},
}</code>
Nach dem Login kopieren

Diese Syntax lässt den Typ struct{} weg, da der Typ aus dem zugewiesenen Wert abgeleitet wird.

Zusammenfassend ist der Unterschied zwischen struct{}{} und {} besteht darin, dass Ersteres den Typ explizit in das zusammengesetzte Literal einschließt, während Letzteres ihn weglässt und sich auf die Typinferenz der umschließenden Kartendeklaration verlässt.

Das obige ist der detaillierte Inhalt vonAnonyme Strukturen in Go: Wann sollte man „struct{}{} vs. {}' verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage