A documentação Go é uma das maiores vantagens da linguagem. Go foi desenhada para ter uma biblioteca padrão forte, comandos consistentes e uma cultura de exemplos pequenos. Isso significa que, em vez de depender de dezenas de posts desatualizados, você consegue resolver muita coisa lendo a referência oficial, executando exemplos e usando o próprio terminal.
O problema para quem está começando é saber onde procurar. Existe go.dev/doc, existe pkg.go.dev, existe go doc, existem páginas antigas do blog oficial, existem propostas, issues, release notes e exemplos embutidos nos pacotes. Este guia organiza esse mapa em português: o que cada fonte resolve, como pesquisar melhor, quais pacotes ler primeiro e como transformar documentação em prática.
Se você ainda está no início da trilha, comece pelo tutorial Go em português e pelo guia Go para iniciantes. Depois volte aqui para aprender a usar a documentação como ferramenta diária.
O mapa rápido da documentação Go
Use esta regra simples:
- go.dev/doc: documentação oficial de alto nível, instalação, tutorial, especificação, release notes e guias da linguagem.
- pkg.go.dev: referência dos pacotes, funções, tipos, exemplos e módulos publicados.
- go doc: consulta local pelo terminal, rápida para pacotes já instalados ou da standard library.
- go help: ajuda dos comandos do toolchain, como
go test,go mod,go build,go envego vet. - blog oficial do Go: explicações mais longas sobre decisões, versões e recursos importantes.
Na prática, pkg.go.dev responde “como uso este pacote?”; go help responde “como uso este comando?”; e go.dev/doc responde “qual é o modelo mental correto da linguagem?”.
Como usar pkg.go.dev sem se perder
O pkg.go.dev é a referência de pacotes do ecossistema Go. Para qualquer pacote, ele mostra documentação, tipos exportados, funções, métodos, exemplos, versão do módulo, licença e import path.
Exemplo: ao abrir pkg.go.dev/net/http, você encontra:
- o caminho correto de importação:
import "net/http"; - funções como
ListenAndServe,HandleFunceNewRequest; - tipos como
Client,Request,Response,HandlereServer; - exemplos executáveis quando o pacote tem testes de exemplo;
- links para o código-fonte.
O ponto mais importante: em Go, nomes com letra maiúscula são exportados. A documentação pública mostra principalmente funções, tipos e métodos exportados. Se você não encontra uma função na documentação, talvez ela seja interna ao pacote ou não faça parte da API pública.
Quando pesquisar, prefira consultas específicas:
site:pkg.go.dev net/http Client timeout
site:pkg.go.dev encoding/json Decoder DisallowUnknownFields
site:pkg.go.dev context WithTimeout example
Isso evita cair em respostas genéricas e leva direto para a referência.
go doc: documentação direto no terminal
O comando go doc é subestimado. Ele permite consultar documentação sem abrir o navegador:
go doc fmt
go doc fmt.Println
go doc net/http.Client
go doc context.WithTimeout
Para listar mais detalhes de um pacote:
go doc -all net/http
Para ver código-fonte junto da documentação:
go doc -src strings.Builder
Esse fluxo é ótimo quando você está programando e quer confirmar assinatura, comentário ou comportamento sem quebrar o ritmo. Combine com go env GOPATH, go list e go test para investigar módulos maiores.
Pacotes da standard library que todo iniciante deve conhecer
A biblioteca padrão é grande, mas você não precisa ler tudo. Para ser produtivo em backend, CLI e automação, comece por estes pacotes:
| Pacote | Para que serve |
|---|---|
fmt | formatação de strings e saída no terminal |
strings | manipulação de texto |
strconv | conversão entre strings e números |
errors | criação e comparação de erros |
context | cancelamento, timeout e escopo de requisição |
net/http | servidores e clientes HTTP |
encoding/json | leitura e escrita de JSON |
time | datas, durações, timers e deadlines |
os | arquivos, variáveis de ambiente e processos |
io | leitura e escrita por streams |
testing | testes unitários e benchmarks |
log/slog | logs estruturados para produção |
Depois aprofunde conforme o projeto: database/sql para banco de dados, sync para concorrência, regexp para expressões regulares, embed para arquivos embutidos e flag para CLIs.
Documentação dos comandos Go
A documentação da linguagem não é só pacote. O toolchain também é parte central do dia a dia. Estes comandos aparecem em quase todo projeto:
go mod init exemplo.com/app # cria um módulo
go mod tidy # sincroniza dependências
go run . # executa o programa
go test ./... # roda testes
go fmt ./... # formata código
go vet ./... # aponta problemas suspeitos
go build ./... # compila pacotes
Para entender um comando em detalhe, use:
go help mod
go help testflag
go help build
go help packages
Se o seu problema é dependência, leia também Go Modules na prática. Se é teste, vá para testes em Go e depois para TDD e CI/CD com Go.
Como ler documentação quando você ainda não sabe inglês técnico
A documentação oficial de Go é majoritariamente em inglês. Você não precisa traduzir palavra por palavra. Procure os padrões:
- Package: explica a finalidade do pacote.
- func: função exportada.
- type: tipo exportado, como struct ou interface.
- method: função ligada a um tipo.
- Example: exemplo executável.
- Deprecated: API antiga; evite em código novo.
- Since: versão do Go em que aquele recurso apareceu.
Quando encontrar um pacote novo, leia nesta ordem:
- parágrafo inicial do pacote;
- exemplos;
- tipos principais;
- funções de criação, como
NewClient,NewRequestouNewEncoder; - notas de erro, concorrência e compatibilidade.
Esse método funciona melhor do que tentar memorizar tudo. Go favorece APIs pequenas; a documentação fica mais útil quando você lê com um problema concreto em mãos.
Exemplo prático: descobrindo como fazer uma requisição HTTP
Imagine que você quer chamar uma API externa. Em vez de procurar um tutorial aleatório, vá ao pacote net/http e procure por Client, NewRequestWithContext e Do.
Um esqueleto seguro fica assim:
package main
import (
"context"
"fmt"
"net/http"
"time"
)
func main() {
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
req, err := http.NewRequestWithContext(ctx, http.MethodGet, "https://example.com", nil)
if err != nil {
panic(err)
}
client := &http.Client{Timeout: 10 * time.Second}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println(resp.StatusCode)
}
A documentação mostra as peças; a prática junta contexto, timeout, cliente e tratamento de erro. Para transformar isso em uma aplicação completa, siga o guia de API REST com Go.
Checklist de documentação antes de copiar código
Antes de copiar um snippet de blog, GitHub ou IA, cheque:
- o pacote ainda é mantido?
- a função está marcada como
Deprecated? - a API existe na versão de Go que você usa?
- o exemplo trata erro?
- há timeout ou cancelamento quando envolve rede?
- há teste ou exemplo oficial parecido?
- o import path é o mesmo do módulo atual?
Esse checklist evita bugs comuns: cliente HTTP sem timeout, erro ignorado, pacote antigo, dependência desnecessária e uso de API experimental sem perceber.
Próximo passo
Use a documentação como parte da rotina: escreva código, leia a assinatura, rode teste, ajuste. Para continuar a trilha em português, siga estes caminhos:
- Go para iniciantes para fundamentos;
- Go Modules na prática para dependências;
- Cheatsheet Go para consulta rápida;
- Logging estruturado com slog para produção;
- Effective Go em 2026 para separar fundamentos clássicos de práticas modernas;
- Vagas Go no Brasil para conectar estudo com mercado.
A documentação Go é curta por design. Quanto mais você usa pkg.go.dev, go doc e go help, menos depende de receitas soltas e mais rápido consegue ler código Go real em empresas brasileiras.