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.
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.
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.
Respostas:
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 nil
mapa, então len
retorna 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.
for _ := range m {}
, sem necessidade de dois argumentos aqui.