Мапи|Maps
#
// _Мапи_ це [асоційований тип даних](http://en.wikipedia.org/wiki/Associative_array) в Go
// (в інших мовах програмування, такі структури даних ще називають: _хеш таблиця_ або _словник_).
package main
import (
"fmt"
"maps"
)
func main() {
// Скориставшись функцією [`make`](./slices):
// `make(map[key-type]val-type)`, ми ініціюємо створення мапи.
m := make(map[string]int)
// Задати/Створити значенням можна за допомогою,
// вже знайомого, синтаксису доступу за індексом,
// де індекс це `ключ`,
// наприклад - <nobr>`name[key] = val`<nobr>.
m["k1"] = 7
m["k2"] = 13
// Друкуючи мапу з `fmt.Println` ми побачимо усі існуючи
// пари ключ/значення, які належить мапі.
fmt.Println("map:", m)
// Отримати значення за ключем можна звернувшись до
// мапи за індексом `name[key]`.
v1 := m["k1"]
fmt.Println("v1:", v1)
// Якщо ключа не існує,
// [нульове значення](https://go.dev/ref/spec#The_zero_value)
// типу буде повернуто.
v3 := m["k3"]
fmt.Println("v3:", v3)
// Функція `len` повертає кількість пар у мапі.
fmt.Println("len:", len(m))
// Функція `delete` видаляє пару ключ/значення з мапи.
delete(m, "k2")
fmt.Println("map:", m)
// Щоб видалити *усі* пари ключ/значення з карти, скористайтесь
// `clear`.
clear(m)
fmt.Println("map:", m)
// Необов'язкове друге значення, отримане під час запиту значення
// за ключем з мапи, покаже чи присутній даний ключ в мапі.
// Це стає в нагоді для перевірки існування ключів ( особливо
// ключів _з нульовим значенням_ (наприклад `0` або `""`)).
// В цьому прикладі перевірки існування, нам непотрібно значення,
// а отже, ми ігноруємо його за допомогою _пустого ідентифікатора_ `_`.
_, prs := m["k2"]
fmt.Println("prs:", prs)
// Використовуючи наступний синтаксис ми можемо ініціалізувати мапу
// одним рядком.
n := map[string]int{"foo": 1, "bar": 2}
fmt.Println("map:", n)
// Пакет `maps` містить корисні функції для мап.
n2 := map[string]int{"foo": 1, "bar": 2}
if maps.Equal(n, n2) {
fmt.Println("n == n2")
}
}
# Note that maps appear in the form `map[k:v k:v]` when
# printed with `fmt.Println`.
$ 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[bar:2 foo:1]
n == n2