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