Mapas en Go: implementación de diccionarios con pares clave-valor
Clase 11 de 29 • Curso 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.