Un mapa en Golang es una colección de pares desordenados de clave-valor. Es ampliamente utilizado porque proporciona búsquedas rápidas y valores que pueden recuperarse, actualizarse o eliminarse con la ayuda de claves.
Sintaxis:
map[Key_Type]Value_Type{}
Ejemplo: var muestra mapa[string]int
Aquí, el ejemplo es un mapa que tiene una string como clave y un tipo int como valor.
En los mapas, la mayoría de los tipos de datos se pueden usar como clave, como int, string, float64, rune, etc. Los mapas también permiten usar estructuras como claves. Estas estructuras deben compararse entre sí. Una estructura o struct en Golang es un tipo definido por el usuario que permite combinar campos de diferentes tipos en un solo tipo.
Ejemplo de una estructura:
type Student struct { name string rollno int class string city string }
Veamos cómo implementar una estructura en un mapa:
Ejemplo 1:
// Golang program to show how to // use structs as map keys package main // importing required packages import "fmt" //declaring a struct type Address struct { Name string city string Pincode int } func main() { // Creating struct instances a2 := Address{Name: "Ram", city: "Delhi", Pincode: 2400} a1 := Address{"Pam", "Dehradun", 2200} a3 := Address{Name: "Sam", city: "Lucknow", Pincode: 1070} // Declaring a map var mp map[Address]int // Checking if the map is empty or not if mp == nil { fmt.Println("True") } else { fmt.Println("False") } // Declaring and initialising // using map literals sample := map[Address]int{a1: 1, a2: 2, a3: 3} fmt.Println(sample) }
Producción:
True map[{Pam Dehradun 2200}:1 {Ram Delhi 2400}:2 {Sam Lucknow 1070}:3]
Iterando sobre un mapa: también puede ejecutar un ciclo para acceder y operar cada tecla del mapa individualmente.
Ejemplo 2:
// Golang program to show how to // use structs as map keys package main // importing required packages import "fmt" // declaring a struct type Address struct { Name string city string Pincode int } func main() { // Creating struct instances a1 := Address{"Pam", "Mumbai", 2200} a2 := Address{Name: "Ram", city: "Delhi", Pincode: 2400} a3 := Address{Name: "Sam", city: "Lucknow", Pincode: 1070} // Declaring and initialising using map literals sample := map[Address]int{a1: 1, a2: 2, a3: 3} for str, val := range sample { fmt.Println(str, val) } // You can also access a struct // field while using a loop for str := range sample { fmt.Println(str.Name) } }
Producción:
{Ram Delhi 2400} 2 {Sam Lucknow 1070} 3 {Pam Mumbai 2200} 1 Pam Ram Sam
Adición de pares clave:valor en el mapa: La adición de pares clave:valor en un mapa se realiza utilizando la sintaxis dada:
map_name[struct_instance]=value
Si ya existe un par clave-valor en el mapa, simplemente actualizará el par anterior con el nuevo.
Ejemplo 3:
// Adding key:value pair in a map package main // importing required packages import "fmt" // declaring a struct type Student struct { Name string rollno int course string } func main() { // Creating struct instances a1 := Student{"Asha", 1, "CSE"} a2 := Student{"Aishwarya", 1, "ECE"} a3 := Student{"Priya", 2, "MECH"} // Declaring and initialising // using map literals mp := map[Student]int{a1: 1, a2: 2} fmt.Println("Original map was", mp) mp[a3] = 3 mp[Student{"Ram", 3, "CSE"}] = 4 // Values have their zero values // Here initial value was 0 after // incrementing it became 1 mp[Student{"Tina", 44, "EEE"}]++ fmt.Println("After adding key:value "+ "pairs to the map, Updated map is:", mp) }
Producción:
El mapa original era map[{Aishwarya 1 ECE}:2 {Asha 1 CSE}:1]
Después de agregar pares clave:valor al mapa, el mapa actualizado es: map[{Aishwarya 1 ECE}:2 {Asha 1 CSE}:1 {Priya 2 MECH}: 3 {Ram 3 CSE}: 4 {Tina 44 EEE}: 1]
Eliminación de una clave de estructura del mapa: puede eliminar una clave de estructura del mapa mediante la función eliminar(). Es una función incorporada y no devuelve ningún valor y no hace nada si la clave no se presenta en el mapa dado. La sintaxis del mismo es la siguiente:
delete(map_name, struct_key)
Ejemplo 4:
// Deleting key: value pair in a map package main // importing required packages import "fmt" // declaring a struct type Student struct { Name string rollno int course string } func main() { // Creating struct instances a1 := Student{"Asha", 1, "CSE"} a2 := Student{"Aishwarya", 1, "ECE"} a3 := Student{"Priya", 2, "MECH"} a4 := Student{"Ram", 3, "CSE"} // Declaring and initialising using map literals mp := map[Student]int{a1: 1, a2: 2, a3: 3, a4: 4} delete(mp, a4) fmt.Println("The remaining map after deletion:") for str, i := range mp { fmt.Println(str, "=", i) } }
Producción:
The remaining map after deletion: {Asha 1 CSE} = 1 {Aishwarya 1 ECE} = 2 {Priya 2 MECH} = 3
Comprobación de la existencia de un par clave:valor: puede comprobar si una estructura está presente en el mapa o no. A continuación se muestra la sintaxis para verificar la existencia de un par de valores struct_key: en el mapa:
// Esto da el valor y el resultado de la verificación
// Si el resultado de la verificación es Verdadero, significa que la clave está presente
// Si el resultado de la verificación es Falso, significa que falta la clave y, en ese caso, el valor toma un
valor de valor cero, check_variable_name:= map_name[clave]o
// Sin valor usando el identificador en blanco
// Solo dará resultado de verificación
_, check_variable_name:= map_name[key]
Ejemplo 6:
// Golang program to check if a // struct key is present package main // importing required packages import "fmt" // declaring a struct type Student struct { Name string rollno int course string } func main() { // Creating struct instances a1 := Student{"Asha", 1, "CSE"} a2 := Student{"Aishwarya", 1, "ECE"} a3 := Student{"Priya", 2, "MECH"} a4 := Student{"Ram", 3, "CSE"} // Declaring and initialising // using map literals mp := map[Student]string{a1: "First", a2: "Second", a3: "Third", a4: "Fourth"} value, check := mp[a4] fmt.Println("Is the key present:", check) fmt.Println("Value of the key:", value) _, check2 := mp[a2] fmt.Println("Is the key present:", check2) }
Producción:
Is the key present: true Value of the key: Fourth Is the key present: true
Publicación traducida automáticamente
Artículo escrito por Hritika Rajput y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA