Como contar itens em um mapa Go?


89

Se eu quiser contar os itens na estrutura do mapa, que declaração devo usar? Tentei usar

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

mas parece que a sintaxe é falsa.


2
Um pouco fora do tópico, você também pode usar for _ := range m {}, sem necessidade de dois argumentos aqui.
Elazar Leibovich

1
BTW, ambos for _, _ := range m {...}e for _ := range m {}não compilarão b / c do :=, que não pode ser usado com _apenas LHSs. =deve ser usado nestes casos.
zzzz

Respostas:


176

Use 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

Aqui estão alguns exemplos transferidos da documentação do SO agora aposentada:

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

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

Se uma variável aponta para um nilmapa, então lenretorna 0.

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

Extraído de Maps - Contando elementos do mapa . O autor original foi Simone Carletti . Os detalhes da atribuição podem ser encontrados na página do contribuidor . A fonte está licenciada sob CC BY-SA 3.0 e pode ser encontrada no arquivo de documentação . ID do tópico de referência: 732 e ID do exemplo: 2528.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.