Módulo 01 – Introdução e fundamentos da linguagem
- História e propósito do Go
- Características da linguagem (simplicidade, performance, concorrência)
- Instalação, workspace,
go mod
- Estrutura básica de um programa
- Tipos primitivos, funções, variáveis, constantes
📌 Laboratório
- Hello world, manipulação de variáveis e tipos, primeiro programa com
go run
Módulo 02 – Estruturas de controle e tipos compostos
if
, for
, switch
, defer
- Arrays, slices, maps
- Structs e tags de struct
- Ponteiros (conceito e aplicação)
📌 Laboratório
- Implementar um CRUD (Create, Read, Update e Delete) em memória usando slices e maps
Módulo 03 – Funções, métodos e interfaces
- Funções com múltiplos retornos
- Funções anônimas e closures
- Métodos em structs
- Interfaces e duck typing
- Boas práticas e princípios de design idiomático em Go
📌 Laboratório
- Refatorar o CRUD usando interfaces para repositórios
Módulo 04 – Tratamento de erros
- Filosofia do Go: erros explícitos
- Padrão error,
errors.New
, fmt.Errorf
- Wrapping e unwrapping com
errors.Is
, errors.As
- Pacote
log
e log/slog
📌 Laboratório
- Criar funções com tratamento de erros e logging estruturado
- Goroutines: o que são e como usar
- Channels (unbuffered, buffered)
select
, sync.WaitGroup
, sync.Mutex
- Padrões de concorrência em Go
📌 Laboratório
- Criar um worker pool para processamento concorrente de tarefas
Módulo 06 – Pacotes, módulos e organização do código
- Estrutura de pacotes idiomática
- Convenções de projeto (
cmd
, internal
, pkg
)
go mod
e versionamento
- Gerenciamento de dependências com
go get
, replace
📌 Laboratório
- Organizar o projeto CRUD em múltiplos pacotes com
go mod
Módulo 07 – Testes e qualidade de código
- Testes com testing
- Testes de unidade e integração
- Testes com mocks (
testify
, gomock
)
- Benchmarks e profiling
- Ferramentas:
go vet
, golint
, staticcheck
📌 Laboratório
- Criar testes unitários e de integração para o CRUD com cobertura de erro
- Servidor HTTP com
net/http
- Middlewares e handlers
- Framework Gin:
roteamento
, binding
, validação
- JSON, status codes e headers
📌 Laboratório
- Implementar uma API RESTful com Gin + validação
- Drivers e
database/sql
- ORM com
gorm
- Migrations com
golang-migrate
- Repositórios e testes de integração com DB
📌 Laboratório
- Persistir o CRUD em banco real (PostgreSQL por exemplo)
Módulo 10 – Deploy, observabilidade e boas práticas
- Build com
go build
, cross-compilation
- Docker com Go
- Logging estruturado (
slog
, zap
)
- Tracing com OpenTelemetry
Linter
, cobertura, documentação automática com godoc
📌 Laboratório
- Containerizar o serviço e expor métricas/trace/logs