Как подсчитать элементы на карте Go?


Если я хочу подсчитать элементы в структуре карты, какой оператор я должен использовать? Я пытался использовать

for _, _ := range m {...}

но, похоже, синтаксис является ложным.

1   51   2012-09-22 18:31:27

1 ответ:

использовать len(m). От http://golang.org/ref/spec#Length_and_capacity

len(s)    string type      string length in bytes
          [n]T, *[n]T      array length (== n)
          []T              slice length
          map[K]T          map length (number of defined keys)
          chan T           number of elements queued in channel buffer

вот несколько примеров, перенесенных из ныне вышедшей на пенсию документации SO:

m := map[string]int{}
len(m) // 0

m["foo"] = 1
len(m) // 1

если переменная указывает на nil карта, то len возвращает 0.

var m map[string]int
len(m) // 0

отрывок из книги карты - подсчет элементов карты. Оригинальный автор был Симон Карлетти. Подробности атрибуции можно найти на сайте страница участника. Источник лицензирован под CC BY-SA 3.0 и можно найти в архивация документов. Идентификатор справочной темы: 732 и пример ID: 2528.