Cómo Iterar sobre un mapa entero en Go

Suraj Joshi 22 enero 2022
  1. Declarar e inicializar los mapas
  2. Iterar sobre un mapa en Go
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 avatar Suraj Joshi avatar

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

LinkedIn

Artículo relacionado - Go Map