Go by Example - IT: Map

Le Map sono la struttura built-in di Go per gli Array associativi (in altri linguaggi si possono trovare strutture simili sotto il nome di hash table o dizionari).

package main
import "fmt"
func main() {

Per creare una nuova map vuota, utilizza la funzione built-in make: make(map[tipo-chiave]tipo-valore).

    m := make(map[string]int)

Puoi impostare i valori della map utilizzando la sintassi tipica nomemap[chiave] = valore

    m["k1"] = 7
    m["k2"] = 13

Passare la map ad una funzione di stampa (tipo Println) mostrerà tutte le coppie chiave-valore della map

    fmt.Println("map:", m)

Puoi ottenere il valore di una chiave con nomemap[chiave].

    v1 := m["k1"]
    fmt.Println("v1: ", v1)

La funzione built-in len restituisce il numero di coppie chiave-valore se la si invoca su una map

    fmt.Println("len:", len(m))

La funzione built-in delete rimuove le coppie chiave-valore dalla map

    delete(m, "k2")
    fmt.Println("map:", m)

Quando si accede ad una map è possibile controllare il secondo valore restituito opzionale che indica la presenza o meno di una chiave all’interno di una map. Questo parametro può essere utilizzato per discernere il caso in cui una chiave non è presente dal caso in cui una chiave ha assegnato lo zero-value (ad esempio 0 o ""). In questo caso non abbiamo nemmeno bisogno del valore associato alla chiave, per cui scartiamo il primo parametro utilizzando l’identificatore blank _

    _, prs := m["k2"]
    fmt.Println("prs:", prs)

È anche possibile dichiarare ed inizializzare una nuova map con la sintassi seguente

    n := map[string]int{"foo": 1, "bar": 2}
    fmt.Println("map:", n)
}

Nota che le map vengono mostrate nel formato map[k:v k:v] se vengono stampate con fmt.Println.

$ go run maps.go 
map: map[k1:7 k2:13]
v1:  7
len: 2
map: map[k1:7]
prs: false
map: map[foo:1 bar:2]

Prossimo esempio: Range.