Go за Прикладом: Мапи (Maps)

Work in Progress / Сайт в процесі розробки

Мапи це ассоційований тип даних в Go (в інших мовах програмування, такі структури ще називають: хеш таблиця або словник).

package main
import "fmt"
func main() {

Cтворюємо пусту мапу скориставший функцією make: make(map[key-type]val-type).

    m := make(map[string]int)

Задаємо ключ/значення пари за допомогою, вже знайомого, синтаксису доступа за індексом (індексом для мап є значення ключа) наприклад - name[key] = val.

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

Друк мапи з fmt.Println покаже нам усі існуючі пари ключ/значення що належить мапі.

    fmt.Println("map:", m)

Добути значення для ключа можна за допомогою name[key].

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

Функція len поверне кількість пар у мапі.

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

Функція delete видалить ключ/значення пару з мапи.

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

Необов’язкове друге значення під час запиту значення по ключу з мапи, покаже чи присутній даний ключ в мапі. Це корисно використати для перевірки існуючих ключів та ключів з нульовим значенням (наприклад 0 або ""). В цьому прикладі, нам непотрібно саме значення - отож ми ігноруємо його за допомогою пустого ідентифікатора _.

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

Декларувати та ініалізувати мапу в один рядок можна використовуючи наступний синтаксис.

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

Зауважте, що мапи відображаються у вигляді map[k:v k:v], коли друкуються 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]

Наступний приклад: Діапазон (Range).