Если я хочу подсчитать элементы в структуре карты, какой оператор мне следует использовать? Я пытался использовать
for _, _ := range m {...}
но кажется, что синтаксис неверен.
Если я хочу подсчитать элементы в структуре карты, какой оператор мне следует использовать? Я пытался использовать
for _, _ := range m {...}
но кажется, что синтаксис неверен.
for _, _ := range m {...}
и for _ := range m {}
не будут компилировать b / c из :=
, что не может использоваться _
только с 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 и может быть найден в архиве документации . Ссылка ID темы: 732 и ID примера: 2528.
for _ := range m {}
, нет необходимости в двух аргументах.