Controlla se una mappa contiene una chiave in Go

Suraj Joshi 6 aprile 2021
  1. Struttura della map in Go
  2. Controlla la chiave in Go-map
Controlla se una mappa contiene una chiave in Go

Le tabelle hash sono implementate in Go come tipo di dati map. Go Maps può essere visualizzato come una raccolta di coppie non ordinate di coppie chiave-valore. Le map sono uno dei tipi di dati più potenti e versatili in Go grazie alla loro capacità di eseguire ricerche, aggiunte ed eliminazioni rapide. Otteniamo due valori di ritorno quando proviamo a ottenere il valore di chiave in una map. Se il secondo valore è vero, allora chiave è presente sulla map.

Struttura della map in Go

Sintassi per map

var map_name map[KeyType]ValueType

Dove, KeyType è un qualsiasi datatype paragonabile e ValueType è anche qualsiasi datatype, inclusa la stessa map. Il datatype per tutte le key in una map deve essere lo stesso. Allo stesso modo, anche il datatype per tutti i value in una map deve essere lo stesso. Tuttavia, il datatype di key e il datatype di value possono essere diversi.

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

}

Produzione:

Key:Jenna
Value: Sthapit

Nell’esempio precedente, map_1 ha il tipo di dati string sia per chiavi che per valori. In map_1, Sthapit è il valore per la chiave Jenna.

Controlla la chiave in Go-map

Sintassi per controllare se una map contiene una chiave in Go

first_value, second_value := map_name[key_name]

La dichiarazione di cui sopra restituisce due valori vale a dire. first_value e second_value. Il first_value dà il valore di chiave. Se map_name non contiene key_name, il first_value sarà il valore zero predefinito. Allo stesso modo, second_value è un valore booleano che sarà true se il key_name è presente nella map. Possiamo interpretare first_value e second_value in modi diversi per verificare se map_name contiene 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)
}   

Produzione:

second_value for 1: true
second_value for 9: false

Qui second_value per 0 è true poiché la chiave 0 è presente in map_name. Tuttavia, il second_value per 9 è false poiché la chiave 9 non è presente in 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")
    }
}
   

Produzione:

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

In questo esempio, abbiamo usato l’istruzione if per verificare se esiste una chiave nella map. Giri è una chiave e Sthapit non è una chiave di map_name.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Articolo correlato - Go Map