Go por Exemplo: Maps

Maps são tipos de dados associativos padrões no Go (às vezes chamados de hashes ou dicionários em outras linguagens).

package main
import "fmt"
func main() {

Para criar um map vazio, use o padrão make: make(map[tipo-chave]tipo-val).

    m := make(map[string]int)

Configura os pares chave/valor usando a típica sintaxe nome[chave] = val.

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

Imprimir um map com, por ex. Println irá mostrar todas os pares chave/valor.

    fmt.Println("map:", m)

Pega o valor para uma chave nome[chave].

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

O padrão len retorna o número do par chave/valor quando chamado por um map.

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

O padrão delete remove os pares chave/valor de um map.

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

O segundo opcional, retorna um valor quando chega o valor de um map, indicando que a chave estava presente em um map. Isso pode ser usado para distinguir entre as chaves perdidas e as chaves com valor zero, como 0 ou "".

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

Você pode também declarar e iniciar um novo map na mesma linha com essa sintaxe.

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

Note que o maps aparece na forma map[c:v c:v] quando impresso com o 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]

Próximo exemplo: Range.