Go в примерах: Карты (Maps)

Карты - это встроенный ассоциативный тип данных Go (иногда называемый хешами).

package main
import "fmt"
func main() {

Для создания пустой карты, используйте 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 удаляет пару key/value из карты.

    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[bar:2 foo:1]

Следующий пример: Ряд (Range).