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 is a backend software engineer at Matrice.ai.
LinkedIn