Heim > Backend-Entwicklung > Golang > Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Was ist der Unterschied?

Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: Was ist der Unterschied?

Susan Sarandon
Freigeben: 2024-12-17 20:13:10
Original
844 Leute haben es durchsucht

Go Maps: `var m = map[string]int{}` vs. `var m = make(map[string]int)`: What's the Difference?

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{}
Nach dem Login kopieren

und

var m = make(map[string]int)
Nach dem Login kopieren

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"}
Nach dem Login kopieren

Um Ihr Beispiel zu verallgemeinern: Ein nicht leeres Kartenliteral ohne Anfangswertpaare wie das folgende:

m := map[T]U{}
Nach dem Login kopieren

ist semantisch identisch mit der expliziten Verwendung von make:

m := make(map[T]U)
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

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