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

Go Maps: „map[string]int{}' vs. „make(map[string]int)': Was ist der Unterschied?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-03 06:53:40943Durchsuche

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

Den Unterschied zwischen der Karteninitialisierung mit und ohne make verstehen

Beim Umgang mit Karten in Go können Sie auf zwei unterschiedliche Formen der Initialisierung stoßen:

1. Verwenden eines Kartenliterals:

var m = map[string]int{}

2. Verwendung der make-Funktion:

var m = make(map[string]int)

Funktionelle Unterschiede:

Der Hauptunterschied liegt in der Art und Weise, wie Karten initialisiert werden. Die zweite Form, die make verwendet, erzeugt immer eine leere Karte. Die erste Form ist jedoch ein Einzelfall eines Kartenliterals. Kartenliterale können Karten mit anfänglichen Schlüssel-Wert-Paaren erstellen. Zum Beispiel:

m := map[bool]string{false: "FALSE", true: "TRUE"}

Äquivalenz und Leistung:

Die verallgemeinerte Version Ihres Beispiels,

m := map[T]U{}

entspricht dem Aufruf von make:

m := make(map[T]U)

Leistungsmäßig verhalten sich die beiden Ansätze bei der Leererstellung identisch Karten.

Anfangskapazität:

Der Hauptvorteil der Verwendung von make ist die Möglichkeit, eine Anfangskapazität anzugeben. Dies kann durch Hinzufügen eines ganzzahligen Arguments zur Make-Funktion erfolgen:

m := make(map[T]U, 50)

Dies initialisiert eine Karte mit Platz für 50 Elemente. Durch die Vorabzuweisung können zukünftige Speicherzuweisungen reduziert werden, wenn Sie mit einem Kartenwachstum rechnen.

Das obige ist der detaillierte Inhalt vonGo Maps: „map[string]int{}' vs. „make(map[string]int)': Was ist der Unterschied?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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