Як підрахувати елементи на карті Go?


88

Якщо я хочу порахувати елементи в структурі карти, який вираз слід використовувати? Я намагався використовувати

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

але, схоже, синтаксис хибний.


2
Трохи не в темі, ви також можете використовувати for _ := range m {}, там немає необхідності в двох аргументах.
Елазар Лейбович

1
До речі, і те, for _, _ := range m {...}і інше for _ := range m {}не буде компілювати контору :=, яка не може використовуватися _лише з LHS. =потрібно використовувати в цьому випадку замість цього.
zzzz

Відповіді:


175

Використовуйте 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.