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.
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"] )
je je fais pour imprimer, FMT.Println l IdMap, puis entre crochets je dis Joe. Je donne la chaîne Joe et cela renverra la valeur associée à Joe et l'imprimera. Je peux également ajouter une paire clé-valeur dans la carte, ou modifier une paire existante si elle existe. Donc, si je veux ajouter une nouvelle paire clé-valeur, je pourrais dire IDMap Jane, peut-être qu'il n'y a pas de clé Jane là-dedans pour le moment, si IDMap Jane entre crochets est égal à quatre cinq six. Cela met donc une nouvelle paire clé-valeur là-dedans. Maintenant, notez que cela modifierait également une paire clé-valeur. Supposons qu'il y ait déjà une paire clé-valeur là-dedans, Jane a été mappée à six, sept, huit. Donc, si je dis IDMap Jane quatre cinq six, je me débarrasse de l'ancienne paire clé-valeur associée à Jane et j'en mets une nouvelle. Jane est donc maintenant associée à quatre cinq six. Vous pouvez également supprimer une paire clé-valeur de la carte sans la remplacer. Vous pouvez simplement le supprimer complètement en appelant la fonction de suppression. Vous appelez delete, vous le transmettez, le premier argument est le nom de la carte, donc IdMap. Le deuxième argument est la clé que vous souhaitez supprimer. Donc, dans ce cas, Joe et elle élimineront cette paire clé-valeur Joe et quelle que soit sa valeur. Cela éliminera cela de la carte. Il existe donc également quelques autres fonctions cartographiques. L'une des choses que vous pouvez faire avec les cartes, c'est que vous pouvez attribuer deux valeurs à une carte. Donc, par exemple, ici, je dis que id comma p colon est égal à IDMap Joe. Maintenant, quand je fais cette assignation, si j'avais simplement assigné une seule valeur, disons que id colon est égal à IDMap Joe, alors ID serait égal à la valeur associée à Joe. Dans ce cas, je fais une assignation à deux valeurs. Donc, la deuxième valeur, id virgule p, sera un booléen. Ce sera vrai si la clé est présente sur la carte. Dans certains cas, vous souhaitez savoir si cette clé se trouve sur la carte, peut-être que vous ne vous souciez même pas de la valeur associée à Joe. Tu veux juste savoir si Joe est sur ta carte. Donc, p sera vrai si cette clé Joe est dans ce cas sur la carte et vraiment fausse dans le cas contraire. Il existe également une fonction de longueur, 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.