{{tag>dev go golang}} Notes et transcriptions du cours "[[https://www.coursera.org/learn/golang-getting-started/home/welcome|Démarrer avec Go]]" proposée par [[https://uci.edu/|University of California, Irvine]] disponible sur la plateforme [[https://www.coursera.org/|coursera]]. ====== Les hash tables en Go : le type map ====== 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. 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. [[325_hash_table|◁ Précédent]] | [[000_start|⌂ Retour au sommaire ]] | [[335_struct|Suivant ▷ ]]