Un mapa no es más que una estructura de datos del tipo llave/valor pares clave / valor, los mapas son útiles para buscar un valor por su clave asociada. Nos permite almacenar valores en el mapa de acuerdo a una llave.
Los mapas poseen una gran capacidad para recuperar datos rápidamente según la llave. Una llave es un índice el cual apunta al valor asociado a dicha llave.
Es sencillo implementar un mapa mediante una tabla hash, puesto que nos proporciona búsquedas más rápidas en el conjunto de datos y recupera fácilmente un valor proporcionando la llave. Los mapas son colecciones desordenadas por lo que no hay forma de predecir el orden en el que se devolverán los valores. Es importante recalcar que en cada iteración sobre un mapa puede devolver un orden diferente.
Inicializar Mapas
Los mapas son creados con corchetes , se define la llave y el valor.
package main import "fmt" //indicamos que nuestro mapa tendrá la llave de tipo string y un valor entero var spidermen= map[string]int{"Toby": 2002, "Andrew": 2012} func main() { fmt.Println(spidermen) }
Declaración de un Mapa Vacío
package main import "fmt" func main() { var spidermen= map[string]int{} fmt.Println(spidermen) // map[] fmt.Printf("%T\n", spidermen) // map[string]int }
Declaración de un Mapa con la función Make
Con la función make es posible crear el mapa y obtenerlo inicializado.
package main import "fmt" func main() { var spidermen= make(map[string]int) spidermen["toby"] = 2002 spidermen["tom"] = 2020 fmt.Println(spidermen) }
Acceder a los elementos
La manera de acceder a los elementos de un mapa es haciendo referencia al nombre de su llave dentro de corchetes.
package main import "fmt" func main() { var spidermen= map[string]int{"peter": 2002, "miles": 2020} fmt.Println(spidermen["peter"]) }
Agregar y Actualizar Elementos
Para agregar un elemento a el mapa solo es necesario agregar la llave y asignar el valor, si el valor no existe se agrega al mapa y si existe se actualiza el valor.
package main import "fmt" func main() { var spidermen= map[string]int{"toby": 2002, "andrew": 2012} fmt.Println(spidermen) // imprimimos el valor inicial del mapa spidermen["tom"] = 2020 // de esta manera agregamos un nuevo elemento al mapa spidermen["toby"] = 2004// de esta manera actualizamos el valor del elemento toby fmt.Println(spidermen) //imprimimos el mapa ya con los nuevos elementos agregados }
Remover Elementos
Para remover los elementos deseados en un Mapa contamos con la función delete que borra un elemento en función de la llave proporcionada.
package main import "fmt" func main() { var spidermen= make(map[string]int) spidermen["toby"] = 2002 spidermen["andrew"] = 2010 spidermen["miles"] = 2020 spidermen["tom"] = 2020 fmt.Println(spidermen) //le indicamos a la funcion delete que borre del mapa spidermen el elemento //asociado a la llave "tom" delete(spidermen, "tom") fmt.Println(spidermen) }
Recorrer un Mapa
Utilizando la sentencia for…range es posible recorrer los elementos de un mapa recuperando La llave(índice) y el elemento del mapa.
package main import "fmt" func main() { var spidermen= map[string]int{"peter": 2002, "andrew": 2010, "miles": 2020, "tom": 2021} for key, spiderman:= range spidermen{ fmt.Println("llave:", key, "=>", "Elemento:", spiderman) } }
Siguientes pasos con Mapas:
Ahora que conocemos lo necesario para trabajar con mapas, intentemos resolver los siguientes ejercicios, compártenos tu solución:
1.- Escribir una función que borre todos los elementos de un mapa
2.- Escribir una función que ordene las llaves de un mapa
3.- Escribir una función que ordene los valores de un mapa
4.- Escribir una función que mezcle los elementos de dos mapas