Trilha de Go: o mapa das 65 aulas
O mapa completo para estudar Go em 9 blocos, do fundamental à concorrência, ao runtime, aos dados, às APIs e à arquitetura.
Revisada em · 4 min de leitura
Esta é a trilha completa de aulas para quem quer dominar Go. As 65 aulas estão em 9 blocos, na ordem em que cada uma só usa o que as anteriores já ensinaram.
A ordem foi decidida pela dependência entre os assuntos. Os fundamentos vêm primeiro, com conversão de tipos, iota e structs antes de tags. A concorrência vem logo depois, com goroutines antes de WaitGroup, channels e sync. O runtime vem em seguida, porque explica o que a concorrência faz por baixo. A biblioteca padrão, os testes e os dados vêm antes das APIs, e a arquitetura fecha com padrões e observabilidade.
Fundamentos da linguagem
- Conversão de tipos em Go: estouro, strings, runes e strconv
- iota em Go: constantes, enums e máscaras de bits
- Controle de Fluxo Idiomático em Go: Loops, Escopo de Decisão e Type Switches
- Structs em Go: campos, embedding, ponteiros e padding
- Tags de struct em Go: reflexão, JSON e validação
- Anatomia de Slices, Arrays e Maps em Go: Estruturas Internas e Armadilhas
- Ponteiros, Memória e Escape Analysis em Go
- Tratamento de Erros Idiomático em Go: Wrapping, Sentinelas e Exceções
- Módulos, Pacotes e Workspaces em Go: Dependências e Encapsulamento
- Função new em Go
- Defer em Go
- Interfaces e composição (aula a escrever, depois de defer e antes de generics)
Concorrência fundamental
- Goroutines em Go: o que são e por que são baratas
- WaitGroup em Go: esperando um grupo de goroutines
- Channels em Go: da analogia ao hchan
- Select em Go
- Context em Go
- Race condition em Go: o que é e como o detector de corrida ajuda
- O pacote sync em Go: mutex, RWMutex, Once, Map e Pool
- Deadlock em Go: como acontece, como ler e como prevenir
Runtime e memória
- Call Stack em Go
- Heap em Go
- O scheduler do Go: G, M e P
- Preempção em Go: como o runtime interrompe goroutines
- Garbage collector do Go: alcançabilidade, pausas e GOGC
- Memory leaks em Go: como a memória fica presa
Biblioteca padrão
- Manipulação de Arquivos e I/O Idiomático em Go
- Trabalhando com JSON em Go: Da Biblioteca Padrão a Alta Performance
- Cliente HTTP Profissional em Go: Resiliência, Pooling e Sockets
- Servidor HTTP Nativo Moderno em Go (1.22+)
- Gerenciamento de Configuração com Viper
Testes e performance
- Testes unitários em Go com o pacote testing
- Table-driven tests e paralelismo em Go
- Testify: asserções e suítes de testes em Go
- Mocks e dublês de teste em Go
- Benchmarking e profiling de testes em Go
- pprof em Go: perfil de CPU, memória e goroutines
- Fuzzing nativo em Go: testes guiados por cobertura
- Testes de integração com Testcontainers em Go
Dados
- database/sql e connection pooling em Go
- PostgreSQL com pgx em Go: o driver nativo
- SQLC: SQL tipado a partir de queries em Go
- GORM na Prática: Modelagem, CRUD, Associações e Trade-offs
- SQLX em Go: mapeamento, named queries e transações
- Database Migrations com Goose: Versionamento, Embed e Zero-Downtime
APIs e mensageria
- Middlewares em Go: Arquitetura Cebola, Interceptação e Produção
- Autenticação e JWT em Go: Tokens, Assinatura e RBAC
- Documentação de APIs com Swagger em Go: OpenAPI, Swag e Automação
- GraphQL com gqlgen: Abordagem Schema-First, Resolvers e DataLoader
- Mensageria Prática em Go: RabbitMQ, Apache Kafka e Resiliência
- Upload de Arquivos para AWS S3 em Go: Streaming, Presigned URLs e Escala
- SSE e EventSource: como o servidor fala com o navegador sem ser pedido
- WebSocket em Go: handshake, quadros e broadcast
- gRPC em Go
Arquitetura e observabilidade
- Injeção de dependência em Go
- Design patterns em Go: da teoria clássica à prática idiomática
- Clean Architecture em Go: Camadas, Inversão de Controle e Pragmatismo
- Injeção de Dependências com Google Wire: DI em Tempo de Compilação
- Logging Estruturado com slog: Performance, Contexto e Produção
- Tracing Distribuído e OpenTelemetry em Go: Spans, Contexto e OTLP
- Resiliência em Go: Timeouts, Exponential Backoff, Circuit Breaker e Bulkhead
Concorrência aplicada
- Worker Pools e Rate Limiting em Go: Concorrência Controlada e Vazão
- Pipeline Pattern e Fan-Out, Fan-In em Go: Concorrência em Estágios
- Locks Distribuídos com Redis em Go: Exclusão Mútua, Redlock e Lua
- Graceful Shutdown e Signal Handling em Go: Encerramento Seguro em Produção
Como estudar
Leia as aulas na ordem. Cada uma indica quais aulas anteriores ela pressupõe. Quando uma aula cita um conceito de uma aula posterior, é porque ela só o menciona de passagem.