Comment compter les éléments dans une carte Go?

89

Si je veux compter les éléments dans la structure de la carte, quelle instruction dois-je utiliser? J'ai essayé d'utiliser

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

mais il semble que la syntaxe soit fausse.

Shirley
la source
2
Légèrement hors sujet, vous pouvez également utiliser for _ := range m {}, pas besoin de deux arguments ici.
Elazar Leibovich
1
BTW, à la fois for _, _ := range m {...}et for _ := range m {}ne compilera pas b / c du :=, qui ne peut pas être utilisé avec _seulement LHS. =doit être utilisé dans ce cas à la place.
zzzz

Réponses:

176

Utilisez 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

Voici quelques exemples portés à partir de la documentation SO maintenant retirée:

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

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

Si une variable pointe vers une nilcarte, lenrenvoie 0.

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

Extrait de Maps - Comptage des éléments cartographiques . L'auteur original était Simone Carletti . Les détails d'attribution se trouvent sur la page des contributeurs . La source est sous licence CC BY-SA 3.0 et peut être trouvée dans l' archive de documentation . ID de sujet de référence: 732 et ID d'exemple: 2528.

zzzz
la source