Якщо я хочу порахувати елементи в структурі карти, який вираз слід використовувати? Я намагався використовувати
for _, _ := range m {...}
але, схоже, синтаксис хибний.
Якщо я хочу порахувати елементи в структурі карти, який вираз слід використовувати? Я намагався використовувати
for _, _ := range m {...}
але, схоже, синтаксис хибний.
for _, _ := range m {...}
і інше for _ := range m {}
не буде компілювати контору :=
, яка не може використовуватися _
лише з LHS. =
потрібно використовувати в цьому випадку замість цього.
Відповіді:
Використовуйте 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.
for _ := range m {}
, там немає необхідності в двох аргументах.