Как массивы, так и срезы позволяют использовать в качестве индексов только целые положительные числа.
Карты (или хеш-таблицы) — эффективные структуры данных, поскольку позволяют использовать индексы различных типов данных в качестве ключей. Практическое эмпирическое правило заключается в том, что вы должны использовать карту, когда вам нужны индексы, не являющиеся целыми положительными числами, или когда целочисленные индексы разделены большими интервалами.
Возможность создавать индексы любого типа позволяет искать элементы и получать к ним доступ на основе заданного ключа или, в более сложных ситуациях, комбинации ключей.
Если необходимо создать карту, используя литерал карты, то можно сделать так:
m := map[string]int { "key1": -1 "key2": 123 }
Порядок элементов в карте рэндомизирован. Это значит, что найти элемент в карте мы можем либо по ключу либо по значению, но не по номеру элемента.
Получить длину карты, которая представляет собой количество ключей в карте, можно используя функцию len()
‚ работающую также с массивами и срезами. Вы можете удалить пару «ключ — значение» из карты, используя функцию delete()
, которая принимает два аргумента: имя карты и название ключа, именно в таком порядке.
Объединяясь с ключевым словом range
, цикл for
реализует функциональность циклов foreach из других языков программирования и позволяет выполнять итерации по всем элементам карты, не зная ее размера или ключей.
package main import "fmt" func main() { // range works with maps as well aMap := make(map[string]string) aMap["123"] = "456" aMap["key"] = "A value" for key, v := range aMap { fmt.Println("key:", key, "value:", v) } for _, v := range aMap { fmt.Print(" # ", v) } fmt.Println() }