Iterando coleções com range
Use range com slices, maps e strings
Iterando coleções com range é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
O que é range
range é uma forma especial do laço for que percorre vetores, fatias, mapas, strings e canais. Ele retorna um índice (ou chave) e um valor a cada iteração.
Percorrendo uma fatia
Retorna o índice e uma cópia do elemento:
package main
import "fmt"
func main() {
fruits := []string{"apple", "banana", "cherry"}
for i, fruit := range fruits {
fmt.Printf("%d: %s\n", i, fruit)
}
}Percorrendo uma matriz
Funciona de forma idêntica às fatias. Os elementos da matriz são copiados a cada iteração:
package main
import "fmt"
func main() {
nums := [3]int{10, 20, 30}
for _, v := range nums {
fmt.Println(v)
}
}Percorrendo um mapa
Retorna a chave e o valor em ordem aleatória:
package main
import "fmt"
func main() {
capitals := map[string]string{
"France": "Paris",
"Japan": "Tokyo",
}
for country, city := range capitals {
fmt.Printf("%s -> %s\n", country, city)
}
}Percorrendo uma cadeia de caracteres
Percorre pontos de código Unicode (rune), não bytes. O índice é a posição em bytes do início do ponto de código:
package main
import "fmt"
func main() {
for i, r := range "héllo" {
fmt.Printf("%d: %c\n", i, r)
}
}Descartando o índice
Use _ para ignorar o índice quando precisar apenas dos valores:
package main
import "fmt"
func main() {
total := 0
for _, v := range []int{1, 2, 3, 4, 5} {
total += v
}
fmt.Println(total) // 15
}Iteração somente pelo índice
Omitir o valor fornece apenas o índice. É útil para mutação no próprio local:
package main
import "fmt"
func main() {
s := []int{1, 2, 3}
for i := range s {
s[i] *= 2
}
fmt.Println(s) // [2 4 6]
}Percorrendo um canal
range lê de um canal até que ele seja fechado:
package main
import "fmt"
func main() {
ch := make(chan int, 3)
ch <- 1; ch <- 2; ch <- 3
close(ch)
for v := range ch {
fmt.Println(v)
}
}A armadilha da variável do laço
A variável da iteração é reutilizada a cada iteração — capturar seu endereço em uma gorrotina ou fechamento é um erro clássico:
package main
import "fmt"
func main() {
nums := []int{1, 2, 3}
funcs := make([]func(), 3)
for i, v := range nums {
v := v // shadow with a copy
funcs[i] = func() { fmt.Println(v) }
}
for _, f := range funcs { f() } // 1 2 3
}Modificando elementos de uma fatia
O valor da iteração é uma cópia. Para modificá-lo, use o índice:
package main
import "fmt"
func main() {
s := []int{10, 20, 30}
for i := range s {
s[i]++
}
fmt.Println(s) // [11 21 31]
}Verificação rápida
Ao percorrer uma cadeia de caracteres, qual é o tipo da variável de valor?
Recapitulação: iteração
Principais aprendizados:
rangefunciona com fatias, matrizes, mapas, cadeias de caracteres e canais- Retorna (índice, valor) — qualquer um deles pode ser descartado com
_ - Os valores da iteração são cópias — modifique-os por meio do índice
- Cadeias de caracteres produzem pontos de código, não bytes
- A ordem de iteração dos mapas é aleatória
Exercício prático
Use a iteração para calcular a soma de todos os valores em um map[string]int e imprima cada entrada e o total.
Perguntas Frequentes
A aula “Iterando coleções com range” é grátis?
Sim — o texto completo de “Iterando coleções com range” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Iterando coleções com range”?
Use range com slices, maps e strings Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Iterando coleções com range”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Arrays: coleções de tamanho fixo
- Slices: listas dinâmicas
- Maps: armazenamentos de chave e valor
- Iterando coleções com range