Range

A expressão à direita na cláusula range é chamada de expressão de intervalo, que pode ser um array, um ponteiro para um array, um slice, uma string, um map ou um canal que permite operações de recebimento.

Assim como em uma atribuição, se estiverem presentes, os operandos à esquerda devem ser endereçáveis ou expressões de índice de map; eles denotam as variáveis de iteração.

Se a expressão de intervalo for um canal, no máximo uma variável de iteração é permitida, caso contrário, pode haver até duas.

Se a última variável de iteração for o identificador em branco, a cláusula range é equivalente à mesma cláusula sem esse identificador.


Expressão range                       1° valor       2° valor

array or slice a [n]E, *[n]E, or []E  index   i int  a[i]         E
string         s string type          index   i int  veja abaixo  rune
map            m map[K]V              key     k K    m[k]         V
channel        c chan E, <-chan E     element e E
                        
range.go