Como verificar se um mapa contém uma chave em Go

Suraj Joshi 13 maio 2021
  1. Estrutura do map em Go
  2. Verificar por key em Go-map
Como verificar se um mapa contém uma chave em Go

As tabelas de hash são implementadas em Go como tipo de dados map. Go Maps pode ser visto como uma coleção de pares não ordenados de pares de valores de chave. Os map são um dos tipos de dados mais poderosos e versáteis em Go por causa de sua capacidade de realizar buscas rápidas, adições e exclusões. Recebemos dois valores de retorno quando tentamos obter o valor de chave em um map. Se o segundo valor for verdadeiro, então a chave está presente no map.

Estrutura do map em Go

Sintaxe para map

var map_name map[KeyType]ValueType

Onde, KeyType é qualquer datype comparável e ValueType é também qualquer datype incluindo o próprio map. O datype para todas as chaves de um map deve ser o mesmo. Da mesma forma, o datype para todos os valores em um map também deve ser o mesmo. Entretanto, o tipo de dados das chaves e o tipo de dados dos valores podem 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)
	}

}

Resultado:

Key:Jenna
Value: Sthapit

No exemplo acima, o map_1 tem string datatype para ambas as chaves e valores. Em map_1, Sthapit é o valor para a chave Jenna.

Verificar por key em Go-map

Sintaxe para verificar se um map contém uma chave em Go

first_value, second_value := map_name[key_name]

A declaração acima retorna dois valores: first_value e second_value. O primeiro_valor dá o valor de chave. Se o map_name não contém key_name, o first_value será o valor padrão valor zero. Da mesma forma, second_value é um valor booleano que será true se o key_name estiver presente no map. Podemos interpretar first_value e second_value de diferentes maneiras para verificar se o key_name contém key_name.

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)
}   

Resultado:

second_value for 1: true
second_value for 9: false

Aqui o second_value de 0 é true, pois a chave 0 está presente no map_name. Entretanto, o second_value de 9 é false pois a chave 9 não está presente no map_name.

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")
    }
}
   

Resultado:

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

Neste exemplo, utilizamos a declaração if para verificar se existe uma chave no map. O Giri é uma chave e o Sthapit não é uma chave de map_name.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Go Map