Cómo comprobar si un mapa contiene una clave en Go

Suraj Joshi 11 marzo 2021
  1. Estructura del map en Go
  2. Busca clave en Go-map
Cómo comprobar si un mapa contiene una clave en Go

Las tablas de hash están implementadas en Go como tipo de datos de map. Los Go Maps pueden ser vistos como una colección de pares no ordenados de pares clave-valor. Los mapas son uno de los tipos de datos más poderosos y versátiles en Go por su habilidad de realizar búsquedas rápidas, agregar y eliminar. Obtenemos dos valores de retorno cuando intentamos obtener el valor de clave en un map. Si el segundo valor es verdadero, entonces la llave está presente en el map.

Estructura del map en Go

Sintaxis para map

var map_name map[KeyType]ValueType

donde KeyType es cualquier tipo de datos comparable y ValueType es también cualquier tipo de datos incluyendo el propio map. El tipo de datos de todas las teclas de un map debe ser el mismo. Del mismo modo, el tipo de datos de todos los valores de un map también debe ser el mismo. Sin embargo, el tipo de datos de las claves y el tipo de datos de los valores pueden ser diferentes.

package main

import "fmt"

func main() {
	map_1 := map[string]string{
		"Jenna": "Sthapit",
	}

	for k, v := range map_1 {
		fmt.Printf("Key:%v\nValue: %s\n", k, v)
	}

}

Producción :

Key:Jenna
Value: Sthapit

En el ejemplo anterior, map_1 tiene un tipo de datos cadena tanto para las claves como para los valores. En map_1, Sthapit es el valor para la clave Jenna.

Busca clave en Go-map

Sintaxis para comprobar si un map contiene una clave en Go

first_value, second_value := map_name[key_name]

La declaración anterior devuelve dos valores, a saber, valor_primero y valor_segundo. El primer_valor da el valor de clave. Si el nombre_del_mapa no contiene nombre_de_la_clave, el valor_de_primer será el valor por defecto valor cero. De manera similar, el valor_segundo es un valor booleano que será true si el nombre_de_la_clave está presente en el map. Podemos interpretar first_value y second_value de diferentes maneras para comprobar si el nombre_del_mapa contiene nombre_de_clave.

package main

import "fmt"

func main() {
    map_name := map[int]string{
        0: "Alok",
        1: "Reman",
        2: "Riken",
        3: "Rudra",
    }
    _, second_value_1 := map_name[1]
    fmt.Printf("second_value for 1: %t\n", second_value_1)

    _, second_value_9 := map_name[9]
    fmt.Printf("second_value for 9: %t\n", second_value_9)
}   

Producción :

second_value for 1: true
second_value for 9: false

Aquí el valor_segundo para 0 es true ya que la clave 0 está presente en el nombre_del_mapa. Sin embargo, el segundo valor para 9 es false ya que la clave 9 no está presente en el nombre_del_mapa.

package main

import "fmt"

func main() {
    map_name := map[string]string{
        "Giri":     "Alok",
        "Nembang":  "Reman",
        "Maharjan": "Riken",
        "Jha":      "Rudra",
    }
    if first_value, second_value := map_name["Giri"]; second_value {
        fmt.Printf("Giri is present in map. Value is: %s\n", first_value)
    } else {
        fmt.Printf("Giri is not present in map.\n")
    }

    if first_value, second_value := map_name["Sthapit"]; second_value {
        fmt.Printf("Sthapit is present in map. Value is: %s\n", first_value)
    } else {
        fmt.Printf("Sthapit is not present in map. \n")
    }
}
   

Producción :

Giri is present in map. Value is: Alok
Sthapit is not present in map.

En este ejemplo, usamos la sentencia if para comprobar si una clave existe en el map. Giri es una clave y Thapit no es una clave de nombre_del_mapa.

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Go Map