Capítulo 04: Estruturas Repetitivas 🍄⭐

Neste capítulo, vamos aprender a repetir blocos de código usando o laço for do Go. Sim, o Go só tem um laço de repetição, o for! Mas ele é capaz de fazer tudo o que o while e o for de outras linguagens fazem, com o tema Super Mario!


📖 O que são Estruturas Repetitivas?

Servem para executar o mesmo bloco de código várias vezes. No Go, não existe a palavra while. Usamos o for para todas as repetições!


📖 Exemplo Guiado: Coleta de Moedas (Estilo While)

Vamos simular o Mario coletando moedas até atingir o limite de 5 moedas. Usaremos o for como se fosse um while.

  1. Crie o arquivo coleta_moedas.go na pasta src/:
package main
 
import "fmt"
 
func main() {
    moedas := 0
 
    // O 'for' aqui funciona exatamente como um 'while'!
    for moedas < 5 {
        moedas++
        fmt.Println("Mario coletou uma moeda! Total:", moedas)
    }
 
    fmt.Println("Parabens! Voce completou a fase!")
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Execute: go run coleta_moedas.go

Resultado Esperado:

Mario coletou uma moeda! Total: 1
Mario coletou uma moeda! Total: 2
Mario coletou uma moeda! Total: 3
Mario coletou uma moeda! Total: 4
Mario coletou uma moeda! Total: 5
Parabens! Voce completou a fase!

📖 Recurso Go: O for Tradicional

Também podemos usar o for no estilo tradicional (com inicialização, condição e incremento):

for i := 1; i <= 5; i++ {
    fmt.Println("Contagem:", i)
}

📊 Ilustração Visual: Fluxo do Laço

Veja como o loop se comporta:

graph TD
    A{"Moedas < 5?"} -->|Sim| B[Coletar Moeda]
    B --> C[Aumentar Contador]
    C --> A
    A -->|Não| D[Fim da Fase]

🛠️ Prática Obrigatória 1: Contagem Regressiva

Crie um programa chamado contagem_bomba.go que faça uma contagem regressiva de 5 até 1 usando o for tradicional (começando em 5 e diminuindo de 1 em 1) para simular o tempo de explosão de uma bomba do Bob-omb.


🔑 Gabarito de Código

Prática 1: contagem_bomba.go

package main
 
import "fmt"
 
func main() {
    fmt.Println("Bob-omb vai explodir!")
    
    for i := 5; i >= 1; i-- {
        fmt.Println(i, "...")
    }
 
    fmt.Println("💥 CABUM!")
}

Capitulo Anterior | Proximo Capitulo