🚀 Capítulo 10: Organizando o Inventário (Tema: Minecraft)
NOTE
Este capítulo utiliza a temática de Minecraft para explicar os Módulos e Pacotes em Go. Aprenda a organizar as pastas do seu projeto para não se perder na bagunça!
1. 🎯 Objetivo da Aula
Compreender como iniciar um projeto em Go usando Módulos, como organizar o código em Pacotes e a regra de ouro da visibilidade (público e privado).
2. 🏢 O Cenário Prático (Seu Desafio)
No jogo Minecraft, você passa horas minerando e coletando centenas de blocos, minérios e itens diferentes. Se você simplesmente jogar tudo no chão ou deixar o seu inventário todo bagunçado, você nunca vai encontrar o diamante que precisa na hora de fazer a sua armadura! Um bom jogador organiza seus baús por categorias: um baú para pedras, outro para comidas e outro para ferramentas.
No desenvolvimento de grandes projetos em Go, nós também precisamos organizar nossos arquivos e códigos em pastas e caixas específicas!
- Nós chamamos essas caixas de Pacotes (Packages).
- E o conjunto de todos os pacotes do seu projeto forma um Módulo! Seu desafio é organizar o seu inventário!
🧠 Fundamentos: A Teoria Traduzida
📦 1. Iniciando o Módulo (go mod):
Antes de começar qualquer projeto moderno em Go, você precisa dizer ao Go que aquela pasta é um módulo. Você faz isso no terminal digitando:
go mod init meu_projetoIsso vai criar um arquivo chamado go.mod. Ele é a certidão de nascimento do seu projeto e vai guardar a lista de todas as bibliotecas que você instalar!
🗂️ 2. Criando Pacotes (Pastas):
Para organizar o código, nós criamos pastas. Cada pasta em Go é um pacote.
- Se você criar uma pasta chamada
calculos, todos os arquivos dentro dela devem começar com a linha:package calculos.
👁️ 3. A Regra de Ouro da Visibilidade:
Como uma função de um pacote pode ser usada por outro pacote? O Go usa uma regra visual muito simples:
- Letra Maiúscula (Público): Se o nome da função ou variável começar com letra maiúscula, ela é pública e outros pacotes podem usá-la! (Ex:
func Somar()). - Letra Minúscula (Privado): Se começar com letra minúscula, ela é privada e só pode ser usada dentro do próprio pacote! (Ex:
func diminuir()).
4. 📖 Exemplo Guiado: Usando outro pacote
Imagine que criamos a pasta matematica com o arquivo soma.go:
package matematica
// Começa com maiúscula, então é pública!
func Somar(a, b int) int {
return a + b
}Agora, no nosso arquivo main.go (na pasta raiz), nós podemos importar e usar:
package main
import (
"fmt"
"meu_projeto/matematica" // Importa o pacote que criamos!
)
func main() {
resultado := matematica.Somar(2, 3)
fmt.Println("Resultado:", resultado)
}5. 🛠️ Prática Obrigatória 1: Iniciando o Projeto
- Qual é o comando exato que você deve digitar no terminal para iniciar um novo projeto Go chamado
meu_jogo?
6. 🛠️ Prática Obrigatória 2: Público ou Privado?
Imagine que você criou um pacote chamado inimigos e dentro dele criou duas funções:
func gerarMonstro()func AtacarJogador()
- Qual dessas funções você conseguirá chamar de dentro do seu arquivo
main.go? Por quê?
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 10 Go_Minecraft) 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_10_minecraft.md💡 Checkpoint de Lógica
O arquivo go.mod também serve para travar a versão do Go que você está usando, garantindo que o seu código funcione igualzinho no computador de qualquer outro colega!
10. 🔥 Desafio de Fixação
Pesquise o que faz o comando go mod tidy e em qual momento devemos usá-lo.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- O comando é
go mod init meu_jogo. Gabarito da Prática 2: - Você só conseguirá chamar a função
AtacarJogador(), pois ela começa com letra Maiúscula, o que diz ao Go que ela é pública e pode ser vista por outros pacotes. A funçãogerarMonstro()é privada porque começa com letra minúscula!