Olá, pessoal! Vamos dar continuidade ao nosso treinamento no canal Ralf Lima. Agora que já aprendemos a tomar decisões no código, vamos aprender a repetir instruções sem precisar reescrever as mesmas linhas várias vezes: estamos falando das estruturas de repetição, também conhecidas como loops.
Diferente de outras linguagens que possuem várias estruturas como while e do-while, o Go simplificou tudo e possui apenas o laço for. Ele é extremamente poderoso e consegue assumir diferentes papéis dependendo de como você o configura.
O for tradicional é composto por três partes essenciais na sua linha de abertura, separadas por ponto e vírgula (;): a inicialização, a condição de parada e o modificador (incremento ou decremento).
| Parte do Loop | O que ela faz? |
|---|---|
indice := 1; |
Inicialização: Cria uma variável contadora e define de onde a repetição vai começar. |
indice < 5; |
Condição de parada: Antes de cada repetição, o Go testa isso. O loop continua rodando enquanto for verdadeiro. |
indice++ |
Modificador: Executado sempre no final de cada rodada para alterar o valor do contador. |
Na hora de atualizar o seu contador ao final de cada rodada do loop, você pode escolher como quer avançar ou recuar. Veja as principais opções que podem ser aplicadas no modificador:
| Símbolo / Expressão | Tipo de Operação | O que acontece com o contador? |
|---|---|---|
++ |
Incremento unitário | Aumenta o valor da variável de 1 em 1 (ex: indice++). |
-- |
Decremento unitário | Diminui o valor da variável de 1 em 1 (ex: indice--). |
+= x |
Incremento customizado | Soma um valor específico a cada rodada (ex: indice += 2 pula de 2 em 2). |
-= x |
Decremento customizado | Subtrai um valor específico a cada rodada (ex: indice -= 3 subtrai de 3 em 3). |
Como o Go não tem a palavra-chave while, nós usamos o próprio for para cumprir esse papel. Para simular um while, basta omitir a inicialização e o modificador da linha do loop, deixando **apenas a condição de parada**. O loop continuará rodando até que essa condição se torne falsa.
Quando precisamos passar por todos os elementos de uma lista (como um vetor ou slice) sem nos preocuparmos em gerenciar contadores manualmente, o Go nos oferece a palavra-chave range. A cada rodada do laço, o range entrega automaticamente duas informações: o índice da posição atual e o valor guardado ali dentro.
Veja abaixo o código estruturado demonstrando o loop tradicional, a simulação de um laço while e a leitura de uma lista de nomes com o range:
package main
import "fmt"
func main() {
// 1. Estrutura de repetição tradicional
fmt.Println("--- Loop Tradicional ---")
for indice := 1; indice < 5; indice++ {
fmt.Println(indice)
}
// 2. Simulando um laço "While"
fmt.Println("\n--- Simulando While ---")
contador := 1
for contador <= 3 {
fmt.Println("Contagem:", contador)
contador++ // O incremento é feito dentro do bloco de código
}
// 3. Utilizando o Range para percorrer uma lista
fmt.Println("\n--- Usando Range ---")
nomes := []string{"Ralf", "Lima", "Go"}
for indice, valor := range nomes {
fmt.Printf("Posição: %d - Nome: %s\n", indice, valor)
}
}
Finalizamos os conteúdos desta aula completa sobre estruturas de repetição e suas variações extras. Espero que tenham compreendido o funcionamento do for tradicional, do formato while e do range. Em caso de dúvidas, comentem nos vídeos disponíveis no YouTube.