Laboratório

- Configuração
- Exercício
- Tarefa
Configuração
- Instale o Go e verifique com
go version
- Crie um diretório
lab6
mkdir lab6
- Acesse o diretório e inicialize um módulo:
cd lab6
go mod init github.com/seu-usuario/lab6
- Crie a seguinte estrutura para o projeto:
lab6/
├── go.mod
├── cmd/
│ └── api/
│ └── main.go
├── internal/
│ └── repo/
│ └── memoria.go
└── models/
└── produto.go
Para download do código-fonte, clique aqui!
Organizar o projeto CRUD em múltiplos pacotes com go mod
Objetivo
Reorganizar o CRUD dos módulos anteriores em uma estrutura de pacotes idiomática, usando go mod para gerenciar dependências e adicionar uma biblioteca externa (github.com/google/uuid) para gerar IDs.
Passo a passo
- Crie o arquivo
models/produto.go
com o seguinte código:
Carregando editor interativo...
- Crie o arquivo
internal/repo/memoria.go
com o seguinte código:
Carregando editor interativo...
- Crie o arquivo
cmd/api/main.go
com o seguinte código:
Carregando editor interativo...
Execução
go mod tidy
go run cmd/api/main.go
Tarefa
- Adicione um pacote api com uma função que simule um endpoint HTTP (ex.:
ListarProdutos
retornando JSON). - Use replace no
go.mod
para testar uma versão local da bibliotecagithub.com/google/uuid
. - Crie um pacote utils com uma função para validar preços (ex.:
ValidarPreco
).
Saída esperada
Console:
Lista de produtos:
ID: 1, Nome: Laptop, Preço: 999.99
ID: 2, Nome: Mouse, Preço: 29.99
Produto encontrado: {ID:1 Nome:Laptop Preco:999.99}
Produto atualizado: {ID:1 Nome:Laptop Pro Preco:1299.99}
Produto deletado com sucesso
Lista de produtos:
ID:2 , Nome: Mouse, Preço: 29.99
Logs JSON (exemplo)
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Produto criado","id":"1","nome":"Laptop","preco":999.99}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Produto criado","id":"2","nome":"Mouse","preco":29.99}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Listando produtos","total":2}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Produto encontrado","id":"1"}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Produto atualizado","id":"1","nome":"Laptop Pro","preco":1299.99}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Produto deletado","id":"1"}
{"time":"2025-06-12T01:09:00Z","level":"INFO","msg":"Listando produtos","total":1}
Caso de uso prático
Esta estrutura é típica de projetos Go reais, como APIs RESTful
, onde pacotes separam lógica de negócio, acesso a dados e entrada/saída.