Outils pour utilisateurs

Outils du site


cours:informatique:dev:golang:demarrer_avec_go:330_map

Ceci est une ancienne révision du document !


Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.

Les hash tables en Go : le type map

:TODO_DOCUPDATE:

Le type map est l'implémentation d'une table de hachage par Golang : c'est exactement une table de hachage. Vous pouvez utiliser la fonction make() pour créer une map.

Nous avons donc un exemple ci-dessous :

var idMap map[string]int
 
idMap = make(map[string]int)

On déclare la variable IdMap de type map. Notez qu'après le mot clé map, entre crochets, on a le type de clé et enfin le type de la valeur. Ainsi, la clé et la valeur peuvent être de types différents.

A la ligne suivante, on assigne à la variable idMap en la faisant pointer vers une map. On crée la map via l'appel de la fonction make(). Au début, la map est vide.

Une autre façon de définir une map est de créer la map avec une définition littérale. Vous pouvez donc l'initialiser avec des valeurs, plutôt avec des paires clé-valeur.

idMap := map[string]int {
         "joe": 123,
         "jane": 136,
         "elvis": 178,
         "dorian": 21 }

Entre accolades on définit les paires clé-valeur en séparant les clés des valeurs par :, et chaque paires par ,. Vous pouvez en définir autant de paires clé-valeur que nécessaire.

Accès aux map

On accède on valeurs d'un type map de la même façon qu'on accède aux données d'un tableau sauf que l'index qu'on utilise entre crochets est la clé.

Donc, si on veut lire la valeur associée à la clé “Joe”, pour l'afficher par exemple :

fmt.Println( idMap["joe"] )

On peut également ajouter une paire clé-valeur ou modifier une paire existante :

//Ajouter une paire
idMap["electra"] = 176

Pour ajouter une nouvelle paire clé-valeur, on place entre crochets une nouvelle clé et on affecte une valeur. Cela met donc une nouvelle paire clé-valeur dans la map idMap.

Notez que cette même syntaxe modifierait également une paire clé-valeur existante. Supposons qu'il y ait déjà une paire clé-valeur “jane” mappée avec la valeur 136. Si on écrit :

idMap["jane"] = 456

On écrase l'ancienne valeur associée à “jane” et définit la nouvelle. “jane” est donc maintenant associée à la valeur 456.

Vous pouvez également supprimer une paire clé-valeur de la map avec la fonction delete().

delete(idMap, "jane")

Vous appelez delete(), en passant en premier argument la map, donc idMap. Le second argument est la clé que vous souhaitez supprimer. Pour l'exemple “jane”. La fonction éliminera cette paire clé-valeur de la map quelle que soit sa valeur.

Quelques fonctions spécifiques aux map

L'une des choses que vous pouvez faire, c'est une assignation à deux variables basée sur une map.

id, p := idMap["joe"]

Dans l'exemple ci-dessus, on fait une assignation à deux valeurs. La deuxième valeur p, sera un booléen. Elle sera vraie si la clé est présente dans la map. Car dans certains cas, vous souhaitez juste savoir si la clé se trouve dans la map, peu importe sa valeur.

Donc, p sera vrai si cette clé “joe” est présente dans la map ou faux dans le cas contraire.

Il existe également une fonction de len(), vous pouvez l'appliquer aux cartes et si vous le faites, vous dites, comme ici, je dis que j'imprime len of IdMap, elle vous indiquera combien de paires clé-valeur se trouvent à l'intérieur de la carte. Une autre chose très courante consiste à itérer sur une carte entière, tout comme on itère sur un tableau, chose très courante. Vous souhaitez effectuer une itération sur chaque paire clé-valeur. Donc, ce que vous faites ici, c'est que vous utilisez essentiellement une attribution à deux valeurs avec le mot clé range. Il s'agit donc d'une boucle en forme de forme. Donc, si vous regardez la boucle for, vous obtenez la clé, puis la valeur, la virgule de la clé, puis le deux-points est égal à la plage sur la carte d'identification. Donc, à chaque passage dans la boucle for, key sera égale à la clé à l'intérieur de l'IdMap et val sera égal à la valeur correspondante dans l'IdMap. Ainsi, chaque passe, chaque itération de la boucle for utilisera une clé et une paire de valeurs. Ainsi, la clé et la valeur seront liées à une paire clé-valeur différente pour chaque itération de la boucle for et vous parcourrez la boucle for jusqu'à ce que vous ayez parcouru chaque paire clé-valeur à l'intérieur de l'IDMap.

◁ Précédent | ⌂ Retour au sommaire | Suivant ▷

cours/informatique/dev/golang/demarrer_avec_go/330_map.1716893916.txt.gz · Dernière modification : 2024/05/28 10:58 de yoann