Avatar ·

Comment initialiser une map en Go de manière élégante et correcte : make ou littéral ?

Bonjour à tous ! Je viens de commencer à apprendre Go et je suis confronté à une incompréhension sur une question apparemment simple. Comment initialiser correctement une map (dictionnaire) ? Je vois différentes options dans le code, et je n'arrive pas à comprendre laquelle est considérée comme « correcte » ou « élégante » du point de vue de la communauté Go. Par exemple, je peux déclarer une map ainsi :
var m map[string]int
Mais si j'essaie d'y écrire une valeur immédiatement après la déclaration :
m["key"] = 10 // panic: assignment to entry in nil map
j'obtiens une panique ! Il s'avère que la map doit être initialisée. Je connais deux façons de le faire : 1. Via la fonction make :
m := make(map[string]int)
m["key"] = 10
2. Via un littéral (vide ou avec des données) :
m := map[string]int{}
m["key"] = 10
// ou directement
m2 := map[string]int{"key": 10}
Les deux fonctionnent apparemment. Mais lequel est le meilleur ? Y a-t-il une différence de performance ? Quand faut-il utiliser une méthode plutôt que l'autre ? Et pourquoi le