Map

Map #

// Le _Map_ sono la struttura built-in di Go per gli [Array associativi](https://it.wikipedia.org/wiki/Array_associativo)
// (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]