Como recordaremos en la entrada relacionada al trabajo con mapas se plantearon 4 ejercicios, en este post vamos a ver la solución propuesta a cada uno:
1.-Escribir una función que borre todos los elementos de un mapa
Se proponen 2 métodos para resolver este ejercicio, uno iterando los elementos y borrando cada elemento , y la segunda creando el mapa nuevamente con la función make.
package main func main() { var spidermen= map[string]int{"toby": 2002, "andrew": 2016, "tom": 2020, "miles": 2021} // Forma 1. Recorremos todos los elementos for spiderman:= range spidermen{ delete(spidermen, spiderman) } // Forma 2. creawndo un nuevo mapa dentro con la misma variable spidermen= make(map[string]int) }
2.-Escribir una función que ordene las llaves de un mapa
Una manera de resolver este ejercicio es crear un slice que contenga las llaves del mapa, usamos la función sort para ordenar el slice y con esto tendremos los valores de nuestra llaves ordenados.
package main import ( "fmt" "sort" ) func main() { clubes:= map[string]int{"Real Madrid": 550, "Barcelona": 510, "Atletico": 300} llaves := make([]string, 0, len(clubes)) for llave:= range clubes{ llaves = append(llaves , llave) } sort.Strings(llaves) for _, llave:= range llaves { fmt.Println(llave, clubes[llave]) } }
3.-Escribir una función que ordene los valores de un mapa
La lógica a utilizar es la misma con la diferencia que ahora vamos a ordenar los valores del mapa.
package main import ( "fmt" "sort" ) func main() { clubes:= map[string]int{"Real Madrid": 550, "Barcelona": 510, "Atletico": 300} // creamos un slice de tipo entero para almacenar los valores valores:= make([]int, 0, len(clubes)) for _, valor := range clubes{ valores= append(valores, valor) } // Ordenamos el slice que contiene los valores. sort.Ints(valores) // por ultimo imprimimos el slice que contiene los valores ordenados. for _, valor := range valores{ fmt.Println(valor) } }
4.- Escribir una función que mezcle los elementos de dos mapas
La solución a este problema vamos a realizarla iterando los elementos del segundo mapa y sobreescribiendo los valores del primero.
package main import "fmt" func main() { primero := map[string]int{"madrid": 38, "barsa": 25, "atletico": 10} segundo := map[string]int{"madrid": 38, "valencia": 5, "atletico": 10, "bilbao": 14} for llave, valor := range segundo { primero[llave] = valor } fmt.Println(primero) }