AnyCompiler

Maps

Um map armazena pares chave-valor, declarado com map[KeyType]ValueType. Literais de map e atribuição usam uma sintaxe familiar, e buscar uma chave ausente não causa panic — apenas retorna o zero value do tipo do valor.

package main

import "fmt"

func main() {
	scores := map[string]int{"Alice": 95, "Bob": 87}
	scores["Carol"] = 91

	fmt.Println(scores["Alice"])
	fmt.Println(scores["Carol"])
}
Output
95
91

O idiom comma-ok

Como uma chave ausente retorna silenciosamente um zero value, o Go te dá um segundo valor de retorno para diferenciar os dois casos: value, ok := m[key] define ok como false se a chave não estava presente, permitindo que você distinga "a chave genuinamente mapeia para zero" de "a chave simplesmente não existe".

package main

import "fmt"

func main() {
	scores := map[string]int{"Alice": 95, "Bob": 87}

	value, ok := scores["Dave"]
	fmt.Println(value, ok)

	value, ok = scores["Alice"]
	fmt.Println(value, ok)
}
Output
0 false
95 true

A seguir: structs — agrupando dados relacionados.

Practice exercise

Crie um map ages := map[string]int{} (vazio), insira "Alice" -> 30, depois imprima ages["Alice"].