Come contare gli elementi in una mappa Go?


91

Se voglio contare gli elementi nella struttura della mappa, quale dichiarazione devo usare? Ho provato a usare

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

ma sembra che la sintassi sia falsa.


2
Un po 'fuori tema, puoi anche usare for _ := range m {}, non c'è bisogno di due argomenti lì.
Elazar Leibovich,

1
BTW, entrambi for _, _ := range m {...}e for _ := range m {}non compileranno il b / c del :=, che non può essere utilizzato _solo con LHS. =deve essere utilizzato in questi casi invece.
zzzz

Risposte:


180

Usa len(m). Da 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

Ecco un paio di esempi portati dalla documentazione SO ora ritirata:

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

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

Se una variabile punta a una nilmappa, lenrestituisce 0.

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

Estratto da Mappe - Conteggio degli elementi della mappa . L'autore originale era Simone Carletti . I dettagli dell'attribuzione possono essere trovati sulla pagina del collaboratore . La fonte è concessa in licenza con CC BY-SA 3.0 e può essere trovata nell'archivio della documentazione . ID argomento di riferimento: 732 e ID esempio: 2528.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.