120 votes

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

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

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

mais il semble que la syntaxe soit fausse.

240voto

zzzz Points 23017

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 tirés de la documentation SO, désormais obsolète :

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

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

Si une variable pointe vers un nil carte, alors len retourne 0.

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

Extrait de Cartes - Compter les éléments de la carte . L'auteur original était Simone Carletti . Les détails d'attribution peuvent être trouvés sur le page des contributeurs . La source est sous licence CC BY-SA 3.0 et peuvent être trouvés dans le Archives de documentation . Sujet de référence ID : 732 et exemple ID : 2528.

7voto

marq Points 328

Pour tous ceux qui veulent compter le nombre d'éléments dans une carte imbriquée :

  var count int
  m := map[string][]int{}
  for _, t := range m {
    count += len(t)
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X