Den Unterschied zwischen der Kartenerstellung mit und ohne make verstehen
In Go gibt es zwei Möglichkeiten, eine Karte zu initialisieren:
var m = map[string]int{}
var m = make(map[string]int)
Obwohl diese ähnlich erscheinen mögen, haben sie unterschiedliche Auswirkungen und sind unterschiedlich praktisch Überlegungen.
Erstellung einer leeren Karte mit make
Die zweite Form, make(map[string]int), erstellt immer eine leere Karte. Dies ist eine einfache Möglichkeit, eine Karte ohne anfängliche Schlüssel-Wert-Paare zu initialisieren.
Nicht leere Kartenliterale
Die erste Form, map[string]int{ } ist ein Sonderfall eines Kartenliterals. Kartenliterale ermöglichen die Erstellung nicht leerer Karten mit vordefinierten Schlüssel-Wert-Paaren. Zum Beispiel:
m := map[bool]string{false: "FALSE", true: "TRUE"}
Leere Kartenliterale
Nun das Beispiel in Ihrer Frage:
m := map[T]U{}
Es ist ein Kartenliteral mit Nr Anfangswerte (Schlüssel/Wert-Paare). Dies entspricht:
m := make(map[T]U)
Daher ist das erste Formular im Wesentlichen eine Abkürzung für das letztere beim Erstellen einer leeren Karte.
Leistungsüberlegungen
Von der Performance her sind beide Ansätze für die Erstellung einer leeren Karte vergleichbar. Allerdings bietet make die zusätzliche Flexibilität, eine Anfangskapazität anzugeben. Durch die Angabe einer größeren Kapazität weist make vorab genügend Speicherplatz zu, um eine bestimmte Anzahl von Elementen aufzunehmen. Dies kann hilfreich sein, um zukünftige Zuweisungen zu reduzieren, wenn Sie wissen, dass die Karte wahrscheinlich wachsen wird.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „map[T]U{}' und „make(map[T]U)' in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!