🚀 Capítulo 03: O Labirinto de Indiana Jones (Tema: Indiana Jones)

NOTE

Este capítulo utiliza a temática de Indiana Jones para explicar as tomadas de decisão e os loops em Go. Aprenda a controlar o fluxo do seu programa!


1. 🎯 Objetivo da Aula

Compreender as estruturas de controle em Go: tomadas de decisão com if e else, e o único laço de repetição da linguagem, o for.

2. 🏢 O Cenário Prático (Seu Desafio)

O famoso arqueólogo Indiana Jones está explorando um templo antigo cheio de armadilhas mortais. A cada passo no chão de pedra, ele precisa tomar decisões lógicas rápidas: “Se o piso tiver uma marca de caveira, eu devo pular! Se não, posso andar normalmente.” E para atravessar corredores longos e escuros, ele precisa repetir passos: “Enquanto eu não chegar ao final do corredor, devo continuar andando para frente.”

No mundo da programação, nós usamos as estruturas de controle para fazer o computador tomar decisões e repetir tarefas.

  • Em Go, nós usamos o clássico if e else para as decisões.
  • E para as repetições (loops), o Go fez algo genial para simplificar a nossa vida: só existe UM tipo de loop, o for! Não existe while nem do-while. Um único comando para dominar todos os caminhos do labirinto!

🧠 Fundamentos: A Teoria Traduzida

⚖️ 1. Tomando Decisões (if e else):

Em Go, a estrutura do if é muito limpa porque não precisamos usar parênteses () na condição!

package main
 
import "fmt"
 
func main() {
    idade := 18
 
    if idade >= 18 {
        fmt.Println("Você pode entrar no templo!")
    } else {
        fmt.Println("Você é muito jovem, fique no acampamento.")
    }
}

🔄 2. O Único Loop: for

Como o Go não tem o comando while, o próprio for assume vários papéis:

O for Clássico (Com contador): Serve para repetir algo um número exato de vezes.

package main
 
import "fmt"
 
func main() {
    // Conta de 1 até 5
    for i := 1; i <= 5; i++ {
        fmt.Println("Passo número:", i)
    }
}

O for estilo “While” (Enquanto): Se você colocar apenas uma condição no for, ele funciona exatamente como um while de outras linguagens!

package main
 
import "fmt"
 
func main() {
    energia := 3
 
    for energia > 0 {
        fmt.Println("Ainda tenho energia!")
        energia-- // Diminui 1 da energia
    }
}

4. 📖 Exemplo Guiado: Fugindo da Pedra Gigante

Vamos simular o Indiana Jones fugindo daquela famosa pedra redonda gigante:

package main
 
import "fmt"
 
func main() {
    distanciaDaPedra := 3 // em metros
 
    for distanciaDaPedra > 0 {
        fmt.Println("Corra! A pedra está a", distanciaDaPedra, "metros!")
        distanciaDaPedra-- // A pedra está chegando mais perto!
    }
 
    fmt.Println("Ufa! Consegui pular e me salvar!")
}

5. 🛠️ Prática Obrigatória 1: O Contador do Templo

Escreva o código de um loop for em Go que:

  1. Comece com uma variável i valendo .
  2. Vá repetindo enquanto i for menor ou igual a .
  3. Imprima na tela a frase "Andei X metros" (onde X é o valor de i).

6. 🛠️ Prática Obrigatória 2: Tomada de Decisão

Imagine que a variável pesoDaSacola guarda o peso de ouro que Indiana Jones pegou.

  1. Escreva uma estrutura if / else em Go que verifique: se o peso for maior que , imprima "A sacola está muito pesada!". Se não, imprima "Posso carregar mais!".

7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 03 Go_Indiana) e clique em Commit to main.
  2. Envie para a Nuvem (Push): Clique em Push origin.

8. 📂 Estrutura de Pastas

spec_backend_com_golang_e_gin/
├── capitulos/
│   └── capitulo_03_indiana.md

💡 Checkpoint de Lógica

Em Go, as chaves {} do if e do for são obrigatórias, mesmo que você só tenha uma única linha de código dentro delas!

10. 🔥 Desafio de Fixação

Pesquise o que faz o comando break dentro de um loop for em Go.

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

for i := 1; i <= 10; i++ {
    fmt.Println("Andei", i, "metros")
}

Gabarito da Prática 2:

if pesoDaSacola > 10 {
    fmt.Println("A sacola está muito pesada!")
} else {
    fmt.Println("Posso carregar mais!")
}

Capitulo Anterior | Proximo Capitulo