Maison > développement back-end > Golang > Go Maps : `var m = map[string]int{}` vs `var m = make(map[string]int)` : quelle est la différence ?

Go Maps : `var m = map[string]int{}` vs `var m = make(map[string]int)` : quelle est la différence ?

Susan Sarandon
Libérer: 2024-12-17 20:13:10
original
845 Les gens l'ont consulté

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

Initialisation de cartes : découvrir les différences entre un raccourci et une création explicite

La question se pose : qu'est-ce qui différencie nettement les deux approches suivantes pour initialiser des cartes dans Allez :

var m = map[string]int{}
Copier après la connexion

et

var m = make(map[string]int)
Copier après la connexion

Le premier est-il simplement une méthode concise pour initialiser rapidement les champs ? Y a-t-il des implications potentielles en termes de performances à prendre en compte ?

Disséquer les différences

La distinction entre ces deux syntaxes réside dans leurs implications pour les cartes non vides. Alors que make crée systématiquement une carte vide, le premier exemple exploite une fonctionnalité unique des littéraux de carte : la possibilité d'établir directement des cartes non vides. Par exemple :

m := map[bool]string{false: "FALSE", true: "TRUE"}
Copier après la connexion

Pour généraliser votre exemple, un littéral de carte non vide sans paires de valeurs initiales, comme celui-ci :

m := map[T]U{}
Copier après la connexion

est sémantiquement identique à l'utilisation explicite de make :

m := make(map[T]U)
Copier après la connexion

Cependant, make offre un avantage supplémentaire : il permet de spécifier une capacité initiale pour la carte qui dépasse le nombre d'éléments initialement attribués. Prenons cet exemple :

m := make(map[T]U, 50)
Copier après la connexion

Cette syntaxe alloue suffisamment d'espace dans la carte pour accueillir jusqu'à 50 éléments. En réservant de manière proactive la mémoire, les allocations futures peuvent être minimisées lors de l'anticipation de la croissance 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!

source:php.cn
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