Go на примерах: Словари (мапы, хеш-таблица)

Map — это встроенный в Go ассоциативный массив (в других языках их также называют хеш-таблицами или словарями).

package main
import (
    "fmt"
    "maps"
)
func main() {

Для создания пустого map используй встроенную функцию make: make(map[тип-ключа]тип-значения).

    m := make(map[string]int)

Пары ключ/значение устанавливаются с помощью стандартного синтаксиса name[key] = val.

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

При выводе map с помощью fmt.Println отображаются все её пары ключ/значение.

    fmt.Println("map:", m)

Значение по ключу получают с помощью name[key].

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

Если ключ не существует, возвращается нулевое значение типа значения.

    v3 := m["k3"]
    fmt.Println("v3:", v3)

Встроенная функция len возвращает количество пар ключ/значение в map.

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

Встроенная функция delete удаляет пары ключ/значение из map.

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

Для удаления всех пар ключ/значение из map используй встроенную функцию clear.

    clear(m)
    fmt.Println("map:", m)

Необязательное второе возвращаемое значение при получении значения из map показывает, присутствовал ли ключ в map. Это позволяет отличить отсутствующий ключ от ключа с нулевым значением вроде 0 или "". В данном случае само значение нам не нужно, поэтому мы его проигнорировали с помощью пустого идентификатора _.

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

Также можно объявить и инициализировать новый map в одной строке с помощью такого синтаксиса.

    n := map[string]int{"один": 1, "два": 2}
    fmt.Println("map:", n)

Пакет maps содержит ряд полезных вспомогательных функций для работы с map.

    n2 := map[string]int{"один": 1, "два": 2}
    if maps.Equal(n, n2) {
        fmt.Println("n == n2")
    }
}

Обрати внимание, что при выводе через fmt.Println map отображаются в формате map[k:v k:v].

$ go run maps.go 
map: map[k1:7 k2:13]
v1: 7
v3: 0
len: 2
map: map[k1:7]
map: map[]
prs: false
map: map[два:2 один:1]
n == n2

Далее: .