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