Comment itérer une carte entière dans Go

Suraj Joshi 30 janvier 2023
  1. Déclarer et initialiser des cartes
  2. Itération sur une carte en Go
Comment itérer une carte entière dans Go

Les tables de hachage sont l’une des structures de données les plus puissantes et les plus polyvalentes en informatique. Il existe plusieurs types d’implémentation de tables de hachage pour différents langages de programmation. Dans Go, les tables de hachage sont implémentées comme des types de données map intégrés. En bref, une map est une collection de paires key-value. Nous utilisons l’instruction for...range dans Go pour boucler sur l’ensemble des key d’une map en récupérant une key à la fois.

Déclarer et initialiser des cartes

Une map peut être déclarée en utilisant la syntaxe suivante:

var map_name map[KeyType]ValueType

KeyType est tout type de données comparable et ValueType est également tout type de données, y compris la map elle-même.

package main

import "fmt"

func main() {
    map_1 := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }

    fmt.Println(map_1)
}        

Production:

map[0:Alok 1:Reman 2:Riken 3:Rudra]

Les cartes peuvent également être créées en utilisant la fonction intégrée make().

package main

import "fmt"

func main() {
    var map_2 = make(map[int]string)
    map_2[0] = "Alok"
    map_2[1] = "Reman"
    map_2[2] = "Riken"
    map_2[3] = "Rudra"
    fmt.Println(map_2)

}        

Production:

map[0:Alok 1:Reman 2:Riken 3:Rudra]

Itération sur une carte en Go

Nous pouvons itérer sur l’ensemble de la map en utilisant des déclarations for...range. Cependant, l’ordre d’itération sur une map n’est pas fixé car la map est une collection non ordonnée.

Itération sur toutes les clés et valeurs d’une map dans le Go

package main

import "fmt"

func main() {
    map_1 := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }

    for k, v := range map_1 {
        fmt.Printf("Key:%v Value: %s\n", k, v)
    }

}    

Production:

Key:0 Value: Alok
Key:1 Value: Reman
Key:2 Value: Riken
Key:3 Value: Rudra

Cependant, si vous utilisez un type de données différent pour les clés ou les valeurs de la map, vous devez alors spécifier le format de ce type de données particulier lors de l’impression des clés ou des valeurs. Un exemple de map avec une chaîne de type de données comme clés est présenté ci-dessous:

package main

import "fmt"

func main() {
    map_1 := map[string]string{
        "Giri    ": "Alok",
        "Nembang ": "Reman",
        "Maharjan": "Riken",
        "Jha     ": "Rudra",
    }

    for k, v := range map_1 {
        fmt.Printf("Key:%v  Value: %s\n", k, v)
    }

}
    

Production:

Key:Giri      Value: Alok
Key:Nembang   Value: Reman
Key:Maharjan  Value: Riken
Key:Jha       Value: Rudra

Itération sur les clés seulement dans Go map

package main

import "fmt"

func main() {
    map_1 := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }

    for k := range map_1 {
        fmt.Printf("Key:%v\n", k)
    }

}

Production:

Key:0
Key:1
Key:2
Key:3

Itération des valeurs uniquement dans Go map

package main

import "fmt"

func main() {
    map_1 := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }

    for _, v := range map_1 {
        fmt.Printf("Value:%s\n", v)
    }
}    

Production:

Value:Riken
Value:Rudra
Value:Alok
Value:Reman

L’ordre dans lequel les paires key et value dans la sortie ci-dessus et l’ordre dans lequel les paires clé-valeur sont imprimées sur votre côté peuvent différer parce que la map est une collection non ordonnée. Vous n’avez donc pas à vous inquiéter de cela.

Auteur: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Article connexe - Go Map