¿Cómo contar elementos en un mapa de Go?

89

Si quiero contar los elementos en la estructura del mapa, ¿qué declaración debo usar? Traté de usar

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

pero parece que la sintaxis es falsa.

shirley
fuente
2
Ligeramente fuera de tema, también puede usar for _ := range m {}, sin necesidad de dos argumentos allí.
Elazar Leibovich
1
Por cierto, ambos for _, _ := range m {...}y for _ := range m {}no compilarán b / c del :=, que no se puede usar con _solo LHS. =debe utilizarse en estos casos.
zzzz

Respuestas:

176

Utilice len(m). De 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

Aquí hay un par de ejemplos transferidos de la documentación SO ahora retirada:

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

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

Si una variable apunta a un nilmapa, lendevuelve 0.

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

Extraído de Mapas: recuento de elementos del mapa . El autor original fue Simone Carletti . Los detalles de la atribución se pueden encontrar en la página del colaborador . La fuente tiene licencia CC BY-SA 3.0 y se puede encontrar en el archivo de documentación . ID de tema de referencia: 732 e ID de ejemplo: 2528.

zzzz
fuente