Maison >développement back-end >Golang >Quelle est la différence entre `map[T]U{}` et `make(map[T]U)` dans Go ?

Quelle est la différence entre `map[T]U{}` et `make(map[T]U)` dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-04 17:26:11498parcourir

What's the Difference Between `map[T]U{}` and `make(map[T]U)` in Go?

Comprendre la distinction entre la création de carte avec et sans make

Dans Go, il existe deux manières d'initialiser une carte :

var m = map[string]int{}
var m = make(map[string]int)

Bien que ces éléments puissent sembler similaires, ils ont des implications et des pratiques différentes. considérations.

Création de carte vide avec make

La deuxième forme, make(map[string]int), crée toujours une carte vide. Il s'agit d'un moyen simple d'initialiser une carte sans paires clé-valeur initiales.

Littéraux de carte non vides

La première forme, map[string]int{ }, est un cas particulier de littéral de carte. Les littéraux de carte permettent la création de cartes non vides avec des paires clé-valeur prédéfinies. Par exemple :

m := map[bool]string{false: "FALSE", true: "TRUE"}

Littéraux de carte vides

Maintenant, l'exemple dans votre question :

m := map[T]U{}

C'est un littéral de carte sans valeurs initiales (paires clé/valeur). Cela équivaut à :

m := make(map[T]U)

Par conséquent, le premier formulaire est essentiellement un raccourci pour le second lors de la création d'une carte vide.

Considérations relatives aux performances

En termes de performances, les deux approches sont comparables pour créer une carte vide. Cependant, make a la flexibilité supplémentaire de spécifier une capacité initiale. En spécifiant une plus grande capacité, make pré-alloue suffisamment d'espace en mémoire pour contenir un certain nombre d'éléments. Cela peut être bénéfique pour réduire les allocations futures si vous savez que la carte est susceptible de s'agrandir.

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:
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