Maison > développement back-end > Golang > Go Maps : « make » ou Map Literal – Quand dois-je utiliser lequel ?

Go Maps : « make » ou Map Literal – Quand dois-je utiliser lequel ?

Mary-Kate Olsen
Libérer: 2024-12-13 12:48:14
original
322 Les gens l'ont consulté

Go Maps:  `make` vs. Map Literal – When Should I Use Which?

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"}
Copier après la connexion

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)
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal