Outils pour utilisateurs

Outils du site


nsi:langages:go:dictionnaires

Dictionnaires - map

On commence par créer un dictionnaire vide en précisant le type des clés et le type des valeurs.

m := make(map[string]int)

Dans ce cas `m` sera un dictionnaire dont les clés sont des chaînes de caractères et les valeurs sont des entiers.

Ensuite on peut ajouter des paires clé - valeur :

m["chien"] = 4
m["poule"] = 2
m["escargot"] = 1

La fonction len renvoie le nombre de paires.

La fonction delete supprime une paire

delete(m, "chien")

La lecture d'une valeur est habituel :

x := m["poule"]
// x est initialisé avec la valeur 2

Cas de clés manquantes

Prenons le code suivant

package main

import "fmt"

func main() {
    fmt.Println("Hello, playground")
    m:= make(map[string]int)
    m["chien"] = 4
    m["serpent"] = 0
    var x int = m["chien"]
    var y int = m["lapin"]
    var z int = m["serpent"]
    fmt.Println(x)
    fmt.Println(y)
    fmt.Println(z)
}

"chien" est présent dans le dictionnaire, x prendra donc la valeur 4 . z de la même façon devrait prendre la valeur 0.

Mais qu'en est-il de y ?

Il n'y aura pas d'erreur. y recevra une valeur nulle par défaut. Si les valeurs avaient étaient été de type string, y aurait reçu "", un texte vide. Comme le tableau contient des entiers, y reçoit une valeur nulle. Donc y reçoit 0.

Ce mécanisme évite les erreurs mais peut-être ennuyeux car il ne permet pas de distinguer le vrai 0 présent dans le dictionnaire pour "serpent" et le faux 0 qui ne correspond à rien dans le dictionnaire…

Si on a besoin de lever le doute, un mécanisme existe :

var y, p := m["lapin"]

la lecture dans le dictionnaire renvoie ici deux résultats, une valeur pour y qui dans ce cas est un 0 par défaut vu que "lapin" n'est pas dans le dictionnaire, et un booléen qui indique si la clé a été trouvée. Ici, p sera false vu que “lapin” n'était pas dans le dictionnaire.

nsi/langages/go/dictionnaires.txt · Dernière modification : de goupillwiki