Karteninitialisierung: Die Unterschiede zwischen Verknüpfung und expliziter Erstellung aufdecken
Es stellt sich die Frage: Was unterscheidet die folgenden beiden Ansätze zur Karteninitialisierung deutlich? Gehen Sie:
var m = map[string]int{}
und
var m = make(map[string]int)
Ist Ersteres lediglich eine prägnante Methode zum schnellen Initialisieren von Feldern? Sind mögliche Auswirkungen auf die Leistung zu berücksichtigen?
Analyse der Unterschiede
Der Unterschied zwischen diesen beiden Syntaxen liegt in ihren Auswirkungen auf nicht leere Karten. Während make stets eine leere Karte erstellt, nutzt das erste Beispiel eine einzigartige Funktion von Kartenliteralen: die Möglichkeit, nicht leere Karten direkt zu erstellen. Zum Beispiel:
m := map[bool]string{false: "FALSE", true: "TRUE"}
Um Ihr Beispiel zu verallgemeinern: Ein nicht leeres Kartenliteral ohne Anfangswertpaare wie das folgende:
m := map[T]U{}
ist semantisch identisch mit der expliziten Verwendung von make:
m := make(map[T]U)
make bietet jedoch einen zusätzlichen Vorteil: Es ermöglicht die Angabe einer anfänglichen Kapazität für die Karte, die die Anzahl der ursprünglich zugewiesenen übersteigt Elemente. Betrachten Sie dieses Beispiel:
m := make(map[T]U, 50)
Diese Syntax weist ausreichend Platz innerhalb der Karte zu, um bis zu 50 Elemente unterzubringen. Durch proaktives Reservieren von Speicher können zukünftige Zuweisungen minimiert werden, wenn mit Kartenwachstum gerechnet wird.
Das obige ist der detaillierte Inhalt vonGo Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Was ist der Unterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!