Pular para o conteúdo

Go Roadmap

Um guia prático e progressivo para aprender Go e construir software de backend e infraestrutura.

  • Algoritmos e resolução de problemas
  • Pseudocódigo
  • Linguagens compiladas vs interpretadas
  • Variáveis e constantes
  • Tipos de dados
  • Comentários
  • Entrada e saída no terminal
  • Condicionais
  • Estruturas de repetição
  • Funções
  • Instalação do Go
  • go run, go build, go fmt, go vet
  • Módulos com go mod init e go.mod
  • Editor com gopls
  • Pacotes e imports
  • Declaração de variáveis (var, :=, const)
  • Tipos básicos: int, float64, string, bool, rune, byte
  • Zero values
  • Conversão de tipos
  • iota e constantes enumeradas
  • if com declaração curta
  • for (a única estrutura de repetição)
  • switch com e sem expressão
  • defer
  • Múltiplos retornos
  • Retornos nomeados
  • Funções variádicas
  • Funções como valores e closures
  • Arrays
  • Slices (len, cap, append, fatiamento)
  • Maps
  • Strings, bytes e runes (UTF-8)
  • Structs e structs aninhadas
  • Ponteiros
  • Pacotes slices e maps da biblioteca padrão
  • Métodos com receptor por valor e por ponteiro
  • Interfaces implícitas
  • Interfaces pequenas (io.Reader, io.Writer, fmt.Stringer)
  • Interface vazia (any) e type assertions
  • Type switches
  • Composição com embedding
  • Visibilidade: exportado vs não exportado
  • Erros como valores (error)
  • errors.New e fmt.Errorf
  • Wrapping com %w
  • errors.Is e errors.As
  • Erros sentinela e tipos de erro customizados
  • panic e recover (e por que evitar)
  • Funções genéricas
  • Tipos genéricos
  • Constraints e comparable
  • Quando usar e quando não usar generics
  • Goroutines
  • Channels com e sem buffer
  • select
  • sync.WaitGroup e sync.Mutex
  • Padrões: worker pool, pipeline, fan-in e fan-out
  • context para cancelamento e timeouts
  • Detector de corrida (-race)
  • fmt, strings, strconv
  • os, io, bufio
  • encoding/json
  • time
  • log/slog (logging estruturado)
  • net/http (cliente e servidor)
  • flag para CLIs
  • go test e arquivos _test.go
  • Testes em tabela (table-driven tests)
  • Subtestes com t.Run
  • Benchmarks e fuzzing
  • Cobertura com -cover
  • net/http/httptest
  • Linters: go vet, staticcheck, golangci-lint
  • Pacotes e responsabilidades
  • Pasta internal/
  • Layout comum: cmd/, internal/, pkg/ (e quando não usar)
  • Versionamento semântico de módulos
  • Workspaces (go work)
  • net/http, handlers e ServeMux
  • Roteamento por método e caminho
  • Middlewares
  • JSON na entrada e na saída
  • Validação de entrada
  • chi
  • Gin
  • Echo
  • Fiber
  • gRPC e Protocol Buffers
  • WebSockets
  • GraphQL (gqlgen)
  • database/sql
  • Drivers (pgx para PostgreSQL)
  • sqlc (código gerado a partir de SQL)
  • GORM (ORM)
  • Migrações com golang-migrate ou goose
  • Redis
  • Autenticação vs autorização
  • Hash de senhas com bcrypt
  • JWT
  • OAuth 2 e OIDC
  • govulncheck para vulnerabilidades em dependências
  • OWASP Top 10
  • Kafka
  • RabbitMQ
  • NATS
  • Logging estruturado com slog
  • Métricas com Prometheus
  • Rastreamento distribuído com OpenTelemetry
  • Profiling com pprof
  • Build de binários para várias plataformas (GOOS, GOARCH)
  • Imagens Docker multi-stage e imagens mínimas (distroless, scratch)
  • Kubernetes
  • CI/CD com GitHub Actions
  • Graceful shutdown
  • CLIs com Cobra
  • Ferramentas de DevOps escritas em Go (Docker, Kubernetes, Terraform)
  • Operadores e controllers do Kubernetes
  • Plugins do Terraform
  • Modelo de memória do Go
  • Escape analysis e alocação
  • Garbage collector e ajustes (GOGC, GOMEMLIMIT)
  • Pacote unsafe e cgo
  • Reflexão (reflect)
  • Performance tuning com benchmarks e pprof
  1. Domine a base: slices, maps, structs, interfaces e tratamento de erros
  2. Escreva testes desde o início com go test e testes em tabela
  3. Construa uma API com net/http, banco de dados e logging com slog
  4. Aprenda concorrência com goroutines, channels e context
  5. Empacote com Docker, publique com CI/CD e observe com Prometheus e OpenTelemetry

Foque em projetos reais ao invés de só teoria.

Sugestões:

  • CLI útil para o seu dia a dia
  • API REST completa com autenticação e PostgreSQL
  • Verificador de links ou crawler concorrente
  • Serviço gRPC com observabilidade

🔥 Regra de ouro: Aprenda - Aplique - Ensine - Repita