Cómo Iterar sobre un mapa entero en Go
Las tablas de hash son una de las estructuras de datos más poderosas y versátiles de la informática. Hay una gran variedad de implementaciones de tablas de hash para diferentes lenguajes de programación. En Go, las tablas hash se implementan como tipos de datos incorporados en los maps
. En resumen, un map
es una colección de pares clave-valor
. Utilizamos la sentencia for...range
en Go para hacer un bucle sobre todas las claves
de un map
recuperando una clave
a la vez.
Declarar e inicializar los mapas
Un map
puede ser declarado usando la siguiente sintaxis:
var map_name map[KeyType]ValueType
donde KeyType
es cualquier tipo de datos
comparable y ValueType
es también cualquier tipo de datos incluyendo el propio map
.
package main
import "fmt"
func main() {
map_1 := map[int]string{
0: "Alok",
1: "Reman",
2: "Riken",
3: "Rudra",
}
fmt.Println(map_1)
}
Producción :
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Mapas
también puede ser creado usando la función make()
incorporada.
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)
}
Producción :
map[0:Alok 1:Reman 2:Riken 3:Rudra]
Iterar sobre un mapa en Go
Podemos iterar sobre todo el map
usando declaraciones de for...range
. Sin embargo, el orden de iteración sobre un map
no está fijado ya que el map
es una colección no ordenada.
Iterar sobre todas las claves y valores de un map
en 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)
}
}
Producción :
Key:0 Value: Alok
Key:1 Value: Reman
Key:2 Value: Riken
Key:3 Value: Rudra
Sin embargo, si usted está usando un tipo de datos diferente para las claves
o los valores
del map
, entonces debe especificar el formato para ese tipo de datos en particular mientras imprime las claves
o los valores
. A continuación se muestra un ejemplo de un map
con una cadena
de datos como claves
:
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)
}
}
Producción :
Key:Giri Value: Alok
Key:Nembang Value: Reman
Key:Maharjan Value: Riken
Key:Jha Value: Rudra
Iterar sobre las teclas sólo en 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)
}
}
Producción :
Key:0
Key:1
Key:2
Key:3
Iterar sobre los valores sólo en el map
de Go
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)
}
}
Producción :
Value:Riken
Value:Rudra
Value:Alok
Value:Reman
El orden en el que los pares clave
y valor
en la salida anterior y el orden en el que los pares clave-valor
están impresos en su lado puede diferir porque el map
es una colección no ordenada. Así que no tienes que preocuparte por eso.
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn