Avatar ·

Wie man eine Map in Go schön und korrekt initialisiert: make oder Literal?

Hallo zusammen! Ich habe gerade angefangen, Go zu lernen, und bin auf ein Verständnisproblem bei einer scheinbar einfachen Frage gestoßen. Wie initialisiert man eine Map (Wörterbuch) richtig? Ich sehe im Code verschiedene Varianten und kann nicht verstehen, welche aus Sicht der Go-Community als „richtig“ oder „schön“ gilt. Zum Beispiel kann ich eine Map so deklarieren:
var m map[string]int
Aber wenn ich versuche, direkt nach der Deklaration einen Wert hineinzuschreiben:
m["key"] = 10 // panic: assignment to entry in nil map
erhalte ich eine Panik! Offenbar muss die Map initialisiert werden. Ich kenne zwei Möglichkeiten, dies zu tun: 1. Über die Funktion make:
m := make(map[string]int)
m["key"] = 10
2. Über ein Literal (leer oder mit Daten):
m := map[string]int{}
m["key"] = 10
// oder direkt
m2 := map[string]int{"key": 10}
Beide funktionieren anscheinend. Aber welche ist besser? Gibt es einen Unterschied in der Leistung? Wann sollte man die eine und wann die andere Methode verwenden? Und warum wird im ersten Fall