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.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn