Maison >développement back-end >Golang >Go Maps : « make » ou Map Literal – Quand dois-je utiliser lequel ?
Clarifier les différences entre l'initialisation de cartes avec et sans "make"
Lorsque vous travaillez avec des cartes Go, il existe deux manières principales de les initialiser : en utilisant un littéral de carte ou en invoquant la fonction "make". Comprendre les nuances subtiles entre ces méthodes est crucial pour optimiser les performances du code.
Map Literals vs. "make"
La deuxième approche, utilisant "make(map[string ]int)", crée systématiquement une carte vide. Cependant, la première méthode, "var m = map[string]int{}", représente un littéral de carte. Cette technique est réservée à l'initialisation de cartes avec des valeurs non vides.
Exemple :
m := map[bool]string{false: "FALSE", true: "TRUE"}
Map Littéraux sans valeurs initiales
La généralisation de votre exemple, "m := map[T]U{}", produit un littéral de carte sans paires clé-valeur initiale. Ceci est fonctionnellement identique à "m := make(map[T]U)".
Considérations sur les performances
Lors de l'initialisation d'une carte vide, il n'y a pratiquement aucune performance différence entre utiliser une carte littérale ou "make". Les deux approches génèrent une carte vide et occupent la même quantité de mémoire.
Spécification de la capacité initiale
Le véritable avantage de l'utilisation de "make" réside dans sa capacité à spécifier une capacité initiale pour une carte. Par défaut, les cartes sont initialisées avec un facteur de croissance qui double leur taille à chaque fois que leur capacité est dépassée. Cependant, utiliser "make" vous permet de prédéterminer la taille de la carte.
Exemple :
m := make(map[T]U, 50)
Le code ci-dessus crée une carte avec suffisamment d'espace pour accueillir jusqu'à 50 éléments. Cette approche peut aider à minimiser les allocations de mémoire futures si vous prévoyez une augmentation significative de la taille de la carte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!