Heim > Backend-Entwicklung > Golang > Welche Verwendungen und Eigenschaften haben leere Strukturen („struct{}' und „struct{}{}') in Go?

Welche Verwendungen und Eigenschaften haben leere Strukturen („struct{}' und „struct{}{}') in Go?

Mary-Kate Olsen
Freigeben: 2024-12-17 17:46:10
Original
131 Leute haben es durchsucht

What are the Uses and Properties of Empty Structs (`struct{}` and `struct{}{}`) in Go?

Die leere Struktur in Go verstehen: struct{} und struct{}{}

In Go definiert das Schlüsselwort struct strukturierte Daten Typ, der aus benannten Elementen besteht. Allerdings verdienen struct{} und struct{}{}, die häufig in idiomatischem Go-Code vorkommen, besondere Aufmerksamkeit.

struct{}: Eine leere Struktur

Die Struktur {} ist ein Sonderfall, der eine leere Struktur ohne Elemente darstellt. Es hat die einzigartige Eigenschaft, dass es die Größe Null hat, was bedeutet, dass einem Wert dieses Typs kein Speicher zugewiesen wird.

struct{}{} als zusammengesetztes Literal

Im Gegensatz dazu ist struct{}{}, ähnlich wie int{5} oder []string{"Go", "Python"} geschrieben, ein zusammengesetztes Literal, das explizit einen Wert vom Typ struct{} erstellt. Dieses Literal hat keine Felder, da struct{} keine definierten Elemente hat.

Anwendungen leerer Strukturen

Leere Strukturen können im Go-Code verschiedene Verwendungszwecke finden:

  • Als „Platzhalter“ in Kartenwerten: Wenn Sie eine Karte zum Speichern eines Satzes (Sammlung eindeutiger Elemente) verwenden, legen Sie den Werttyp auf fest struct{} stellt sicher, dass nur Schlüssel (Elemente) gespeichert werden, ohne Platz für zugehörige Werte zu verschwenden.
  • Als Feld innerhalb einer Struktur: Eine leere Struktur kann innerhalb einer größeren Struktur für zusätzliche Auffüllung sorgen und so bestimmte Ausrichtungsanforderungen sicherstellen spezifische Architekturen.

Beispiel: Erstellen eines Sets mit einer leeren Struktur

Hier ist ein Beispiel für die Verwendung einer Karte mit einem leeren Strukturwerttyp zum Erstellen eines Satzes:

package main

import "fmt"

type Set map[string]struct{}

func main() {
    s := make(Set)
    s["red"] = struct{}{}
    s["blue"] = struct{}{}

    fmt.Println(s)  // Prints: map[blue:{} red:{}]
}
Nach dem Login kopieren

Beachten Sie, dass dieser Ansatz nur die Existenz von Schlüsseln prüft, nicht ihre zugehörigen Werte.

Das obige ist der detaillierte Inhalt vonWelche Verwendungen und Eigenschaften haben leere Strukturen („struct{}' und „struct{}{}') in Go?. 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