🚀 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
ifeelsepara 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 existewhilenemdo-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:
- Comece com uma variável
ivalendo . - Vá repetindo enquanto
ifor menor ou igual a . - Imprima na tela a frase
"Andei X metros"(onde X é o valor dei).
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.
- Escreva uma estrutura
if / elseem 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)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 03 Go_Indiana) e clique em Commit to main. - 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!")
}