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