Mapas en Go: implementación de diccionarios con pares clave-valor

Clase 11 de 29Curso de Go

Resumen

Los maps en Go son estructuras de datos útiles para almacenar información en pares de clave-valor (Key-Value). Puedes imaginar un mapa como un diccionario, similar a los utilizados en otros lenguajes de programación como Python, Java o C#. Esta estructura ofrece flexibilidad al permitir agregar y eliminar elementos según sea necesario, sin límites específicos.

¿Qué es un mapa en Go y cómo declararlo?

Un mapa es básicamente un arreglo especial que maneja relaciones clave-valor. Se declara fácilmente con la función make, indicando el tipo de dato para claves y valores:

mapa := make(map[string]int)

En este ejemplo, el mapa acepta claves tipo string y valores tipo int.

¿Cómo agregar y acceder a los valores en un mapa?

Agregar elementos es muy simple, solo define el mapa con su clave y asigna un valor:

mapa["Amin"] = 4
mapa["Espinosa"] = 8

Para acceder a un valor se utiliza directamente su clave dentro del mapa:

version1 := mapa["Espinosa"]

Esto extrae el valor correspondiente, que en este caso sería 8.

¿Cómo verificar elementos y longitud en un mapa?

Para verificar la cantidad de elementos en un mapa, utiliza la función len:

fmt.Println(len(mapa)) // imprime 2 si hay dos elementos

Para verificar si una clave existe, usa una sintaxis especial junto con un guión bajo (_ o underscore):

_, dato := mapa["Amin"]
fmt.Println(dato) // true si "Amin" existe, false si no

El underscore ignora el valor retornado, concentrándose en verificar la existencia de la clave.

¿Cómo eliminar elementos y limpiar mapas completos?

Para borrar un elemento específico del mapa, usa la función delete:

delete(mapa, "Amin")

Para eliminar todos los elementos de un mapa, emplea la función clear:

clear(mapa)

Esto deja el mapa vacío.

¿Cómo comparar mapas en Go?

Para verificar la equivalencia entre dos mapas, primero asegúrate de importar el paquete especial desde la biblioteca estándar de Go:

import "maps"

nuevoMapa1 := map[string]int{"Miranda": 7, "Espinosa": 8}
nuevoMapa2 := map[string]int{"Miranda": 7, "Espinosa": 8}

if maps.Equal(nuevoMapa1, nuevoMapa2) {
  fmt.Println("Los mapas son iguales")
}

Este método retorna verdadero o falso dependiendo de si los mapas poseen claves y valores iguales.

¿Tienes alguna duda acerca del manejo de mapas en Go? Comparte qué aspectos te gustaría explorar más a fondo.