Pular para o conteúdo

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.

6
módulos
35
tópicos
45
min para avaliar

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 pergunta

Sem alternativas para chutar: você escreve, a IA corrige com a rubrica do tópico e diz em que nível sua resposta está.

0 / 600

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.