Отображения

Последнее обновление: 21.01.2017

Отображение или map представляет ссылку на хеш-таблицу - структуру данных, где каждый элемент представляет пару "ключ-значение". При этом каждый элемент имеет уникальный ключ, по которому можно получить значение элемента. Отображение определяется как объект типа map[K]V, где К представляет тип ключа, а V - тип значения. Причем тип ключа K должен поддерживать операцию сравнения ==, чтобы оображение могло сопоставить значение с одним из ключей и хеш-таблицы.

Например, определение отображения, которое в качестве ключей имеет тип string, а в качестве значений - тип int:

var people map[string]int	// Ключи представляют тип string, значения - тип int

Установка значений отображения:

var people = map[string]int{ 
	"Tom": 1,
	"Bob": 2,
	"Sam": 4,
	"Alice": 8,
}
fmt.Println(people)		// map[Tom:1 Bob:2 Sam:4 Alice:8]

Как и в массиве или в срезе элементы помещаютя в фигурные скобки. Каждый элемент представляет пару ключ -значение. Вначале идет ключ и через двоеточие значение. Определение элемента завершается запятой.

Для обращения к элементам нужно применять ключи:

var people = map[string]int{ 
	"Tom": 1,
	"Bob": 2,
	"Sam": 4,
	"Alice": 8,
}
fmt.Println(people["Alice"])		// 8
fmt.Println(people["Bob"])			// 2
people["Bob"] = 32
fmt.Println(people["Bob"])			// 32

Для проверки наличия элемента по определенному ключу можно применять выражение if:

var people = map[string]int{ 
	"Tom": 1,
	"Bob": 2,
	"Sam": 4,
	"Alice": 8,
}
if val, ok := people["Tom"]; ok{
	fmt.Println(val)
}

Если значение по заданному ключу имеется в отображении, то переменная ok будет равна true, а переменная val будет хранить полученное значение. Если переменная ok равна false, то значения по ключу в отображении нет.

Для перебора элементов применяется цикл for:

var people = map[string]int{ 
	"Tom": 1,
	"Bob": 2,
	"Sam": 4,
	"Alice": 8,
}
for key, value := range people{
	fmt.Println(key, value)
}

Консольный вывод программы:

Tom 1
Bob 2
Sam 4
Alice 8

Функция make представляет альтернативный вариант создания отображения. Она создает пустую хеш-таблицу:

people := make(map[string]int)

Добавление и удаление элементов

Для добавления элементов достаточно просто выполнить установку значения по новому ключу и элемент с этим ключом будет добавлен в коллекцию:

var people = map[string]int{ "Tom": 1, "Bob": 2}
people["Kate"] = 128
fmt.Println(people)		// map[Tom:1  Bob:2  Kate:128]

Для удаления применяется встроенная функция delete(map, key), первым параметром которой является отображение, а вторым - ключ, по которому надо удалить элемент.

var people = map[string]int{ "Tom": 1, "Bob": 2, "Sam": 8}
delete(people, "Bob")
fmt.Println(people)		// map[Tom:1  Sam:8]
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850