Якщо я хочу порахувати елементи в структурі карти, який вираз слід використовувати? Я намагався використовувати
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 {}, там немає необхідності в двох аргументах.