0Pricing
Go Academy · Aula

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:

  • range funciona 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

  1. Arrays: coleções de tamanho fixo
  2. Slices: listas dinâmicas
  3. Maps: armazenamentos de chave e valor
  4. Iterando coleções com range
← Voltar para Go Academy