Notes et transcriptions du cours “Démarrer avec Go” proposée par University of California, Irvine disponible sur la plateforme coursera.
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.
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.
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.
Appliquer la fonction len()
sur un map pour déterminer le nombre de paires clé-valeur qui se trouvent à l'intérieur.
fmt.Println( len( idMap ))
Une autre chose très courante consiste à itérer sur un map, cela se fait de la même manière que sur un tableau.
Vous utilisez essentiellement une affectation à deux valeurs avec le mot clé range
. Il s'agit donc d'une boucle for
.
for key, val := range idMap { fmt.Println( key, val ) }
Si vous regardez la boucle for, vous obtenez à chaque itération la clé (affectée à key
) et la valeur (affectée à val
). Ainsi, chaque passe, chaque itération de la boucle for
utilisera une paire clé-valeur de la map idMap
. Dans cet exemple elles sont simplement affichées.