Maison  >  Article  >  développement back-end  >  Qu’est-ce que la carte en langage Go ?

Qu’est-ce que la carte en langage Go ?

王林
王林original
2023-06-09 21:06:05857parcourir

Le langage

Go est un langage de programmation open source. Il s'agit d'un langage de programmation au niveau système développé par Google et largement utilisé dans des projets hautes performances et à grande échelle. Parmi eux, la carte en langage Go est un type de données très important, largement utilisé dans divers types de développement. Cet article présentera ce qu'est la carte en langage Go et comment l'utiliser.

1. Qu'est-ce que map

Dans le langage Go, map est une structure de données similaire à une table de hachage. Une carte n'est pas ordonnée et se compose d'un ensemble de paires clé-valeur, chaque clé n'apparaissant qu'une seule fois. Les clés de la carte doivent être des types de données prenant en charge la comparaison d'égalité, tels que des chaînes, des nombres, des booléens, etc. La valeur peut être n'importe quel type de données, tel que des chaînes, des nombres, des structures, des tranches, etc.

La déclaration de map dans le langage Go nécessite l'utilisation de la fonction make, comme indiqué ci-dessous :

var mapName = make(map[keyType]valueType)

Où, mapName est le nom de la variable de la map, keyType est le type de la clé et valueType est le type de valeur. Par exemple, nous pouvons déclarer une carte avec un type de clé string et un type de valeur int, comme suit :

var myMap = make(map[string]int)

2 Opérations sur la carte

  1. Add. éléments

Pour ajouter des éléments à la carte, vous devez utiliser le symbole d'affectation pour l'affectation, comme indiqué ci-dessous :

myMap["one"] = 1
myMap["two"] = 2

Dans l'exemple ci-dessus, nous avons ajouté deux éléments aux paires clé-valeur myMap, où les clés sont "un" et "deux" et les valeurs correspondantes sont 1 et 2.

  1. Obtenir des éléments

Pour obtenir des éléments dans la carte, vous pouvez utiliser l'opérateur d'indice [], comme indiqué ci-dessous :

value := myMap["one"]

Dans l'exemple ci-dessus, nous utilisons l'opérateur d'indice [] pour obtenir la valeur avec la clé "one" dans myMap et l'enregistrons dans la variable value.

Il est à noter que si la clé n'existe pas dans la map, la valeur zéro correspondant au type de valeur sera renvoyée. Par exemple, si nous obtenons une clé qui n'existe pas comme ceci :

value := myMap["three"]

alors la valeur de la variable value sera la valeur zéro 0 de type int.

  1. Modifier des éléments

Pour modifier les éléments de la carte, vous pouvez directement utiliser l'opérateur d'indice [] pour attribuer des valeurs, comme indiqué ci-dessous :

myMap["one"] = 100

Dans l'exemple ci-dessus, nous avons changé la valeur de la clé "one" dans myMap à 100.

  1. Supprimer des éléments

Pour supprimer des éléments de la carte, vous pouvez utiliser la fonction de suppression du langage Go, comme indiqué ci-dessous : #🎜 🎜#

delete(myMap, "one")

Dans l'exemple ci-dessus, nous avons supprimé l'élément avec la clé "one" de myMap.

    Obtenir la longueur de la carte
Pour obtenir la longueur de la carte, vous pouvez utiliser la fonction len dans le langage Go, comme montré ci-dessous :

length := len(myMap)

Dans l'exemple ci-dessus, nous obtenons la longueur de myMap et la sauvegardons dans la longueur variable.

3. Parcourez la carte

Il existe de nombreuses façons de parcourir la carte. La méthode la plus courante consiste à utiliser une boucle for, comme indiqué ci-dessous :

for key, value := range myMap {
    fmt.Println(key, value)
}
. #🎜🎜 #Dans l'exemple ci-dessus, nous parcourons toutes les paires clé-valeur dans myMap et les envoyons à la console.

Il convient de noter que la carte n'est pas ordonnée pendant le parcours et que l'ordre des paires clé-valeur renvoyées à chaque fois qu'elle est parcourue est aléatoire.

4. Caractéristiques de la carte

Thread safety
  1. Par défaut, la carte n'est pas thread-safe. Si plusieurs threads modifient la même carte en même temps, une concurrence et une incohérence des données se produiront. Afin de résoudre ce problème, le langage Go fournit le package sync, dans lequel le type sync.Map peut implémenter une carte thread-safe.

Ne prend pas en charge les opérateurs de comparaison
  1. Le type de clé de carte doit prendre en charge les opérateurs de comparaison d'égalité, tels que les chaînes, les nombres, les booléens, etc. Cependant, les types tels que les tranches et les structures du langage Go ne prennent pas en charge les opérateurs de comparaison d'égalité. Si vous souhaitez utiliser ces types comme clés dans une carte, vous pouvez utiliser des pointeurs ou écrire une fonction de comparaison personnalisée.

Dynamic Scaling
  1. L'implémentation sous-jacente de la carte est une table de hachage Lorsque les éléments de la carte augmentent ou diminuent, la table de hachage sous-jacente. sera également une mise à l'échelle dynamique. Ce processus alloue plus de mémoire et recalcule la valeur de hachage. Par conséquent, les performances des opérations cartographiques seront affectées lors du traitement de grandes quantités de données.

Conclusion

Dans cet article, nous avons présenté la map dans le langage Go. Il s'agit d'un type de données très important et largement utilisé dans divers types de développement. Nous avons appris ce qu'est une carte, comment la faire fonctionner et ses propriétés. J'espère que grâce à l'introduction de cet article, les lecteurs pourront avoir une compréhension approfondie des cartes en langage Go et aider à développer des applications plus efficaces et plus stables.

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