🚀 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_projeto

Isso 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

  1. 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()
  1. 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)

  1. Faça o Commit: No GitHub Desktop, digite a mensagem (ex: Finaliza Capítulo 10 Go_Minecraft) 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_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:

  1. O comando é go mod init meu_jogo. Gabarito da Prática 2:
  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ção gerarMonstro() é privada porque começa com letra minúscula!

Capitulo Anterior | Proximo Capitulo