Maps

Карты (Maps)|Maps #

// Карты - это встроенный [ассоциативный тип данных](http://en.wikipedia.org/wiki/Associative_array)
// 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]