Trilha de estudo
Trilha Go: tudo o que estudar, tópico por tópico
Avaliação abrangente de Go (Golang) cobrindo fundamentos da linguagem, estruturas de dados, interfaces, concorrência, biblioteca padrão, padrões avançados e internos do runtime.
Resposta curta
Para aprender Go, percorra 6 módulos e 35 tópicos na ordem em que um apoia o próximo. Comece por Fundamentos da Linguagem e siga para Estruturas de Dados & Interfaces e Concorrência. Use o mapa como checklist, ou meça seu nível e estude só o que falta.
O que você vai estudar
Os tópicos estão agrupados por módulo. Abra um para ver os objetivos e os conceitos-chave.
1 · Fundamentos da Linguagem6 tópicos
Tipos & Variáveis
Tipos básicos (int, float64, string, bool), declaração de variáveis (var, :=), valores zero, constantes, iota, conversões de tipo
Objetivos
- Declarar e inicializar variáveis
- Compreender valores zero e o sistema de tipos
Conceitos-chave
- declaração var
- declaração curta de variável :=
- valores zero
- constantes
- iota
- conversão de tipo
- tipos básicos
- rune
Funções & Métodos
Assinaturas de funções, múltiplos valores de retorno, retornos nomeados, funções variádicas, métodos em tipos, receivers de valor vs de ponteiro
Objetivos
- Escrever funções com múltiplos retornos
- Escolher entre receivers de valor e de ponteiro
Conceitos-chave
- múltiplos valores de retorno
- retornos nomeados
- funções variádicas
- defer
- receiver de valor
- receiver de ponteiro
- funções de primeira classe
- closures
Fluxo de Controle
if/else, laços for (três formas), instruções switch, type switch, goto, labels, break/continue com labels
Objetivos
- Escrever fluxo de controle idiomático em Go
- Utilizar for-range e type switch corretamente
Conceitos-chave
- if com instrução init
- laço for (C-style, range, infinito)
- switch
- type switch
- fallthrough
- break/continue com labels
Pacotes & Imports
Declaração de pacote, caminhos de import, nomes exportados vs não exportados, funções init, módulos Go, go.mod, go.sum
Objetivos
- Organizar código em pacotes
- Compreender o sistema de módulos do Go
Conceitos-chave
- declaração de pacote
- nomes exportados (maiúscula)
- caminhos de import
- import em branco _
- import com ponto
- init()
- go.mod
- go.sum
Ponteiros
Declaração de ponteiros, desreferenciação, receivers de ponteiro, ponteiros nil, ponteiro para struct, análise de escape, alocação stack vs heap, limitações de aritmética de ponteiros
Objetivos
- Declarar e utilizar ponteiros corretamente
- Compreender decisões de alocação stack vs heap
Conceitos-chave
- declaração de ponteiro
- desreferenciação
- receivers de ponteiro
- ponteiros nil
- ponteiro para struct
- análise de escape
- alocação stack vs heap
- limitações de aritmética de ponteiros
Módulos & Pacotes
go mod init, arquivo go.mod, arquivo go.sum, go mod tidy, versionamento de módulos, diretivas replace, vendoring, módulos privados
Objetivos
- Configurar e gerenciar módulos Go
- Compreender versionamento de dependências e vendoring
Conceitos-chave
- go mod init
- arquivo go.mod
- arquivo go.sum
- go mod tidy
- versionamento de módulos
- diretivas replace
- vendoring
- módulos privados
2 · Estruturas de Dados & Interfaces4 tópicos
Slices & Maps
Arrays vs slices, internos de slice (length, capacity, backing array), make, append, copy, operações com map, nil slices vs slices vazios
Objetivos
- Compreender os internos de slices
- Evitar armadilhas comuns com slices e maps
Conceitos-chave
- array vs slice
- cabeçalho do slice (ptr, len, cap)
- make()
- append()
- copy()
- operações com map
- nil slice vs slice vazio
- delete()
Structs
Definição de structs, embedding (composição em vez de herança), struct tags, structs anônimas, comparação de structs, ponteiro para struct
Objetivos
- Projetar tipos com struct embedding
- Utilizar struct tags para serialização
Conceitos-chave
- definição de struct
- embedding
- struct tags
- structs anônimas
- campos promovidos
- comparação de structs
- ponteiro para struct
- padrão construtor
Interfaces
Satisfação implícita de interfaces, composição de interfaces, interface vazia (any), asserções de tipo, type switch, interfaces comuns (io.Reader, io.Writer, fmt.Stringer)
Objetivos
- Projetar interfaces pequenas e combináveis
- Aplicar o padrão io.Reader/Writer
Conceitos-chave
- satisfação implícita
- composição de interfaces
- interface vazia (any)
- asserção de tipo
- type switch
- io.Reader/Writer
- fmt.Stringer
- embedding de interfaces
Tratamento de Erros
Interface error, errors.New, fmt.Errorf com %w, errors.Is, errors.As, tipos de erro customizados, erros sentinela, panic/recover
Objetivos
- Implementar tratamento de erros idiomático
- Encapsular e desencapsular erros corretamente
Conceitos-chave
- interface error
- errors.New
- fmt.Errorf %w
- errors.Is
- errors.As
- tipos de erro customizados
- erros sentinela
- panic/recover
3 · Concorrência4 tópicos
Goroutines
Criação de goroutines, ciclo de vida de goroutines, vazamento de goroutines, closures em goroutines, runtime.GOMAXPROCS, fundamentos de agendamento de goroutines
Objetivos
- Iniciar e gerenciar goroutines com segurança
- Identificar vazamentos de goroutines
Conceitos-chave
- palavra-chave go
- ciclo de vida de goroutine
- vazamento de goroutines
- captura de closure em goroutines
- runtime.GOMAXPROCS
- saída da goroutine main
- crescimento de stack de goroutine
Channels
Channels sem buffer vs com buffer, direção de channel, range sobre channel, fechamento de channels, deadlocks, padrões de channel (fan-out, fan-in, pipeline)
Objetivos
- Construir pipelines concorrentes com channels
- Evitar deadlocks
Conceitos-chave
- channel sem buffer
- channel com buffer
- direção de channel
- range sobre channel
- close()
- deadlock
- fan-out/fan-in
- padrão pipeline
Instrução Select
select para multiplexação de channels, caso default, padrões de timeout com time.After, context.Context para cancelamento, padrão de canal done
Objetivos
- Multiplexar channels com select
- Implementar cancelamento com context
Conceitos-chave
- select
- caso default
- time.After
- time.Tick
- context.Context
- context.WithCancel
- context.WithTimeout
- canal done
Primitivas de Sincronização
sync.Mutex, sync.RWMutex, sync.WaitGroup, sync.Once, sync.Pool, sync.Map, operações atômicas
Objetivos
- Proteger estado compartilhado corretamente
- Escolher entre channels e mutexes
Conceitos-chave
- sync.Mutex
- sync.RWMutex
- sync.WaitGroup
- sync.Once
- sync.Pool
- sync.Map
- operações atômicas
- detector de corrida
4 · Biblioteca Padrão & Ferramentas10 tópicos
net/http
Servidor e cliente HTTP, interface Handler, ServeMux, padrão middleware, timeouts do http.Client, contexto de requisição, ResponseWriter
Objetivos
- Construir servidores HTTP com middleware adequado
- Configurar clientes com timeouts
Conceitos-chave
- http.Handler
- http.HandlerFunc
- ServeMux
- middleware
- http.Client
- timeouts
- ResponseWriter
- contexto de requisição
encoding/json
Marshal/Unmarshal, struct tags, streaming com json.Decoder/Encoder, MarshalJSON customizado, tratamento de null, omitempty, structs embutidas em JSON
Objetivos
- Serializar e desserializar JSON corretamente
- Tratar casos extremos no processamento de JSON
Conceitos-chave
- json.Marshal
- json.Unmarshal
- struct tags
- json.Decoder/Encoder
- MarshalJSON
- UnmarshalJSON
- omitempty
- json.RawMessage
Pacote de Testes
testing.T, testes orientados a tabela, subtestes, benchmarks (testing.B), auxiliares de teste, testdata, cobertura de testes, httptest
Objetivos
- Escrever testes idiomáticos orientados a tabela
- Realizar benchmarks e profiling de código
Conceitos-chave
- testing.T
- testes orientados a tabela
- subtestes com t.Run
- benchmarks com testing.B
- t.Helper()
- httptest.NewServer
- cobertura de testes
- t.Parallel()
Ferramentas Go
go build, go run, go vet, go fmt, go mod (init, tidy, vendor), go generate, go install, golangci-lint, pprof
Objetivos
- Utilizar o toolchain do Go de forma eficaz
- Configurar pipelines de CI para projetos Go
Conceitos-chave
- go build
- go vet
- go fmt
- go mod tidy
- go generate
- golangci-lint
- pprof
- tags de build
Biblioteca Padrão
pacote os, pacote time, pacote regexp, pacote bufio, pacote flag, pacote strings, formatação fmt, padrões io.Reader/Writer
Objetivos
- Navegar e utilizar os principais pacotes da biblioteca padrão
- Aplicar padrões io.Reader/Writer em toda a biblioteca padrão
Conceitos-chave
- pacote os
- pacote time
- pacote regexp
- pacote bufio
- pacote flag
- pacote strings
- formatação fmt
- io.Reader/Writer
Frameworks Web
Framework Gin, framework Echo, framework Fiber, roteador Chi, padrões de middleware, binding de requisição, renderização de resposta, comparação de frameworks
Objetivos
- Comparar frameworks web Go e escolher adequadamente
- Implementar padrões de middleware e tratamento de requisições
Conceitos-chave
- framework Gin
- framework Echo
- framework Fiber
- roteador Chi
- padrões de middleware
- binding de requisição
- renderização de resposta
- comparação de frameworks
Acesso a Banco de Dados
Pacote database/sql, ORM GORM, pacote sqlx, driver pgx, pool de conexões, consultas preparadas, transações em Go, ferramentas de migração
Objetivos
- Utilizar database/sql e ORMs para persistência de dados
- Gerenciar conexões e transações corretamente
Conceitos-chave
- pacote database/sql
- ORM GORM
- pacote sqlx
- driver pgx
- pool de conexões
- consultas preparadas
- transações em Go
- ferramentas de migração
Desenvolvimento CLI
Biblioteca Cobra, urfave/cli, pacote flag, análise de argumentos, subcomandos, prompts interativos, testes de CLI, builds multiplataforma
Objetivos
- Construir ferramentas de linha de comando com Cobra ou urfave/cli
- Implementar subcomandos e padrões de análise de argumentos
Conceitos-chave
- biblioteca Cobra
- urfave/cli
- pacote flag
- análise de argumentos
- subcomandos
- prompts interativos
- testes de CLI
- builds multiplataforma
Compilação & Cadeia de Ferramentas
Flags de go build, compilação cruzada, tags de build, ldflags, CGO_ENABLED, go install, go generate, cache de build
Objetivos
- Configurar compilação cruzada e flags de build
- Incorporar informações de versão e controlar CGo com configurações de build
Conceitos-chave
- flags de go build
- compilação cruzada
- tags de build
- ldflags
- CGO_ENABLED
- go install
- go generate
- cache de build
Qualidade de Código
golangci-lint, staticcheck, go vet, govulncheck, gofmt vs goimports, detector de corrida, go test -cover, benchmarking
Objetivos
- Configurar pipelines abrangentes de linting e qualidade para Go
- Utilizar ferramentas de verificação de vulnerabilidades e cobertura de forma eficaz
Conceitos-chave
- golangci-lint
- staticcheck
- go vet
- govulncheck
- gofmt vs goimports
- detector de corrida
- go test -cover
- benchmarking
5 · Padrões Avançados4 tópicos
Generics
Parâmetros de tipo, constraints, conjuntos de tipos, comparable, any, funções genéricas, tipos genéricos, inferência de tipos, pacote constraints
Objetivos
- Escrever funções e tipos genéricos
- Projetar constraints de tipo eficazes
Conceitos-chave
- parâmetros de tipo
- constraints
- conjuntos de tipos
- comparable
- constraint any
- inferência de tipos
- estruturas de dados genéricas
- ~T (tipo subjacente)
Reflexão
reflect.Type, reflect.Value, Kind, análise de struct tags, chamadas dinâmicas de métodos, reflect.DeepEqual, implicações de desempenho
Objetivos
- Utilizar reflexão para introspecção de structs
- Compreender quando evitar reflexão
Conceitos-chave
- reflect.TypeOf
- reflect.ValueOf
- Kind
- análise de struct tags
- invocação dinâmica de métodos
- reflect.DeepEqual
- mutabilidade de valor
- custo de desempenho
Pacote Unsafe
unsafe.Pointer, unsafe.Sizeof, unsafe.Offsetof, aritmética de uintptr, reinterpretação de tipos, layout de memória, alinhamento, quando o uso de unsafe é justificado
Objetivos
- Compreender layout de memória e alinhamento
- Conhecer riscos e usos válidos do pacote unsafe
Conceitos-chave
- unsafe.Pointer
- unsafe.Sizeof
- unsafe.Offsetof
- uintptr
- reinterpretação de tipos
- alinhamento de memória
- preenchimento de struct
- unsafe.Slice
Geração de Código
go generate, geradores de código (stringer, mockgen, protoc-gen-go), manipulação de AST com go/ast, text/template para codegen, tags de build para código gerado
Objetivos
- Configurar pipelines de geração de código
- Analisar o AST do Go para ferramentas customizadas
Conceitos-chave
- go generate
- diretiva //go:generate
- stringer
- mockgen
- protoc-gen-go
- go/ast
- text/template
- restrições de build
6 · Go Especialista7 tópicos
Internos do Runtime
Scheduler do Go (modelo GMP), coletor de lixo (tri-color mark-and-sweep), gerenciamento de stack, análise de escape, alocador de memória, ajuste de GOGC
Objetivos
- Explicar o modelo GMP do scheduler do Go
- Ajustar o GC para cargas de trabalho em produção
Conceitos-chave
- modelo GMP (goroutine, M, P)
- roubo de trabalho
- GC tri-color
- barreiras de escrita
- crescimento/encolhimento de stack
- análise de escape
- GOGC / GOMEMLIMIT
- alocador de memória (mcache, mcentral, mheap)
Otimização de Desempenho
pprof (CPU, memória, goroutine), ferramenta trace, metodologia de benchmarking, redução de alocações, sync.Pool, internação de strings, overhead de CGo, padrões de sistemas distribuídos
Objetivos
- Realizar profiling e otimizar serviços Go
- Projetar sistemas distribuídos de alto desempenho em Go
Conceitos-chave
- pprof
- ferramenta trace
- metodologia de benchmark
- redução de alocações
- sync.Pool
- string builder
- overhead de CGo
- pool de conexões
Padrões Avançados de Concorrência
Concorrência avançada em Go: errgroup, semáforo, árvores de cancelamento de context e antipadrões de concorrência
Objetivos
- Utilizar errgroup para distribuir goroutines e coletar o primeiro erro
- Detectar e corrigir data races usando a flag -race
Conceitos-chave
- errgroup
- semáforo
- cancelamento de context
- padrões select
- direções de channel
- sync.Once
- detecção de data race
- flag -race
CGo & Interoperabilidade C
Chamando código C a partir de Go usando CGo, gerenciando memória através da fronteira e compreendendo os custos de desempenho do CGo
Objetivos
- Chamar uma função C a partir de Go e gerenciar memória entre fronteiras corretamente
- Explicar por que o CGo desabilita o scheduler de goroutines e suas implicações de desempenho
Conceitos-chave
- import C
- convenções de chamada CGo
- C.malloc/C.free
- GoString/CString
- overhead de desempenho do CGo
- travamento de thread
Ajuste de Desempenho Go em Escala
Utilizando pprof, trace e benchmarks para identificar e corrigir gargalos de CPU, memória e goroutines em serviços Go
Objetivos
- Realizar profiling de um serviço Go com pprof para localizar o caminho quente de CPU
- Utilizar go tool trace para diagnosticar latência de agendamento de goroutines
Conceitos-chave
- pprof
- go tool trace
- funções de benchmark
- allocs/op
- profiling de CPU
- vazamento de goroutines
- sync.Pool
Padrões de Segurança em Go
Codificação segura em Go: validação de entrada, prevenção de SQL injection, APIs criptográficas e auditoria de dependências
Objetivos
- Configurar crypto/tls com cipher suites seguras e versão mínima
- Utilizar gosec no CI para detectar antipadrões comuns de segurança em Go
Conceitos-chave
- crypto/tls
- escaping com html/template
- consultas parametrizadas
- gosec
- cadeia de suprimentos (go.sum)
- comparação em tempo constante
- padrões seguros por padrão
Arquitetura de Plugins Go
Implementando aplicações Go extensíveis usando o pacote plugin, hashicorp/go-plugin ou pontos de extensão baseados em interfaces
Objetivos
- Comparar o pacote plugin nativo do Go com hashicorp/go-plugin para uso em produção
- Projetar um contrato de plugin baseado em interface que permita recarga a quente
Conceitos-chave
- plugin.Open
- hashicorp/go-plugin
- plugins baseados em gRPC
- contratos de interface
- estabilidade de ABI
- padrões de recarga a quente
Níveis: Júnior, Pleno, Sênior e Especialista
Explique com suas palavras
Corrigido por IA · sem cadastro · 1 perguntaSem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.
Já estuda Go?
A avaliação mede tópico por tópico, e o plano pula o que você já sabe.
Aberto para ler. A conta só é necessária para ser medido.
Perguntas frequentes
Por onde começar a estudar Go?
Comece por Fundamentos da Linguagem: Tipos & Variáveis, Funções & Métodos e Fluxo de Controle. O mapa ordena os tópicos pelo que depende de quê, então cada um prepara o seguinte.
Quanto tempo leva uma avaliação completa de Go?
Uma avaliação completa desta trilha leva cerca de 45 minutos. O tempo de estudo depende de onde você começa; o diagnóstico mostra quais tópicos você pode pular.
Preciso de conta para usar esta página?
Não. O mapa, os objetivos e os conceitos-chave são abertos. A conta só é necessária para ser medido, ver seu gap por tópico e receber um plano.