Maison > développement back-end > Golang > Utilisation de la carte Golang

Utilisation de la carte Golang

王林
Libérer: 2023-05-10 19:46:05
original
660 Les gens l'ont consulté

Golang est un langage de programmation très puissant avec une grande efficacité et une syntaxe simple et facile à apprendre. En ce qui concerne les avantages de Go, l’une des principales raisons réside dans les structures de données intégrées telles que les cartes. Dans cet article, nous examinerons plus en détail l’utilisation de la carte Go.

Go map est une collection non ordonnée de paires clé-valeur, ce qui signifie que vous pouvez utiliser n'importe quel type de valeur comme clé et valeur. Les paires clé-valeur dans la carte ne sont pas stockées dans un ordre particulier, mais plutôt dans l'ordre de leurs valeurs de hachage. Nous discuterons de cette fonctionnalité plus en détail ci-dessous.

Créer une carte

Pour créer une carte dans Go, vous devez utiliser la fonction intégrée make(). Voyons comment créer une carte et y ajouter des paires clé-valeur.

m := make(map[string]int) // 创建一个字符串为键,int 类型为值的 map
m["foo"] = 42             // 向 map 中添加键为 "foo" 的值为 42
fmt.Println(m["foo"])     // 输出 map 中键为 "foo" 的值,输出 42
Copier après la connexion

Dans cet exemple, nous créons une carte avec des clés de chaîne et des valeurs int, puis nous y ajoutons la valeur 42 avec la clé "foo". La dernière ligne de code affiche la valeur dans la carte avec la clé "foo", nous obtenons donc 42 en sortie.

Il existe également une autre façon de spécifier la valeur initiale lors de la création de la carte. Vous pouvez l'essayer comme suit :

m := map[string]int {
    "foo": 42,
    "bar": 24,
}
Copier après la connexion

Dans cet exemple, nous avons créé une carte avec deux paires clé-valeur, où la clé "foo" a une valeur de 42 et la clé "bar" a une valeur de 24.

Accéder à la valeur dans une Map

Pour accéder à la valeur d'une map dans Go, vous pouvez utiliser la méthode suivante :

val, ok := m["foo"]
fmt.Println(val, ok)     // 输出 42, true
Copier après la connexion

Ici la variable val stocke la valeur de la clé "foo" dans la map, et le ok La variable indique si la clé existe dans la carte. Une entrée pour "foo".

S'il n'y a pas une telle entrée dans la carte (c'est-à-dire que "foo" n'est pas une clé), alors la variable ok sera fausse. Donc, si vous souhaitez vérifier si l'accès à la valeur dans la carte a été réussi, vous pouvez vérifier la valeur de la variable ok.

Itérer sur les valeurs d'une carte

Itérer sur les valeurs d'une carte dans Go est facile, vous pouvez utiliser une boucle for-range.

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

for k, v := range m {
    fmt.Printf("key: %s, value: %d
", k, v)
}

// 输出:
// key: foo, value: 42
// key: bar, value: 24
Copier après la connexion

Dans cet exemple, nous utilisons une boucle for-range pour parcourir les clés et les valeurs de la carte m et les afficher à chaque itération. Notez que la syntaxe de la boucle for itère non seulement les clés de la carte, mais également les valeurs de la carte.

Supprimer des valeurs dans Map

Supprimer des valeurs dans Go map est également très simple, il vous suffit d'utiliser la fonction delete().

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

delete(m, "foo") // 删除 map 中键为 "foo" 的键值对
Copier après la connexion

Dans cet exemple, nous utilisons la fonction delete() pour supprimer la paire clé-valeur avec la clé "foo" dans la carte. Après suppression, la carte ne contiendra plus d'entrée avec la clé "foo".

Taille et capacité de la carte

Dans Go, la carte a des attributs de taille et de capacité. Cependant, contrairement aux structures de données d’autres langages, les cartes dans Go n’ont pas d’attribut de capacité explicite. Donc, si vous voulez connaître la taille de la carte, vous devez utiliser la fonction intégrée len() comme indiqué ci-dessous :

m := map[string]int {
    "foo": 42,
    "bar": 24,
}

fmt.Println(len(m)) // 输出长度为 2
Copier après la connexion

Ici, nous utilisons la fonction len() pour afficher la longueur de la carte m et sa sortie est 2 .

Performances de la carte et recommandations d'utilisation

map est une structure de données très puissante, mais elle doit être utilisée avec prudence. Puisque map est une table de hachage dynamique, de nombreux développeurs la considèrent comme plus rapide que les autres structures de données. Cependant, dans le monde réel, les performances de la carte peuvent être affectées par la gestion de la mémoire et les conflits de hachage, ce qui ralentit le code.

Voici quelques suggestions pour l'utilisation des cartes Go :

  • Évitez d'ajouter trop de paires clé-valeur dans la carte. Trop de paires clé-valeur peuvent entraîner davantage de collisions de hachage.
  • Pour les situations où de grandes cartes doivent être traitées, il est recommandé d'utiliser le type sync.Map sécurisé par concurrence.
  • Lorsque vous envisagez les performances, vous devriez envisager d'utiliser des tableaux, des tranches ou d'autres structures de données.

Néanmoins, la carte est une structure de données très pratique et flexible. Si vous l’utilisez de manière judicieuse, il sera idéal pour votre code Go.

Résumé

Dans cet article, nous avons découvert l'utilisation de la carte dans Golang. Nous avons appris comment créer, accéder, itérer et supprimer des entrées dans une carte, ainsi que comment afficher la taille et la capacité d'une carte. Parallèlement, nous proposons également quelques suggestions sur l'utilisation de la carte, dans l'espoir de vous aider à mieux utiliser cette structure de données dans Go.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal