Resposta rápida: use go.dev/doc para guias oficiais, especificação e notas de versão; pkg.go.dev para consultar pacotes, tipos, funções e exemplos; go doc para ler a documentação da versão instalada no terminal; e go help para entender comandos como go test, go build e go mod. Se uma resposta de blog ou IA divergir da referência, confirme na documentação da versão usada pelo seu projeto.
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. Em vez de depender de dezenas de posts desatualizados, você consegue resolver muita coisa lendo a referência oficial, executando exemplos e consultando o próprio toolchain.
O problema para quem está começando é saber onde procurar. Existe go.dev/doc, existe pkg.go.dev, existe go doc, existem páginas do blog oficial, 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, como conferir a versão documentada e como transformar referência em código testado.
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:
| Sua dúvida | Onde procurar primeiro | Exemplo |
|---|---|---|
| Como a linguagem funciona? | go.dev/doc e especificação | interfaces, generics, modelo de memória |
| Como usar um pacote? | pkg.go.dev | net/http.Client, json.Decoder |
| O que existe na versão instalada? | go doc | go doc net/http.Server |
| Como funciona um comando? | go help | go help testflag |
| O que mudou em uma versão? | release notes em go.dev/doc | mudanças de linguagem e standard library |
| Por que um recurso foi desenhado assim? | Go Blog, proposals e issues | contexto, compatibilidade e trade-offs |
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?”. Para comportamento sensível à versão, compare a página online com go version, go.mod e go doc no projeto.
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.
Confira a versão do pacote antes de copiar
O pkg.go.dev pode mostrar a versão mais recente de um módulo, enquanto seu projeto usa outra. Antes de aplicar um exemplo, confira o módulo selecionado na página e compare com o projeto:
go version
go list -m all
go list -m -json exemplo.com/modulo
Na standard library, o comportamento acompanha a versão do toolchain. Em dependências externas, leia a documentação da versão declarada no go.mod, não apenas a versão mais nova. Se uma função aparece no site mas o compilador diz undefined, a primeira suspeita deve ser diferença de versão.
Para APIs adicionadas recentemente, procure a indicação “added in” no pkg.go.dev e confira as release notes. Para dependências, abra também o link Source Files: comentários, testes e implementação esclarecem contratos que um snippet isolado não mostra.
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. Como consulta o código disponível no seu ambiente, ele também reduz o risco de ler documentação de uma versão diferente.
Combine com estes comandos:
go list -f '{{.Doc}}' net/http # resumo do pacote
go list -f '{{.Dir}}' net/http # diretório do código-fonte
go env GOROOT # raiz da instalação do Go
go env GOPATH # cache e workspace padrão
go test ./... # valida o uso no projeto
No editor, o gopls usa essas mesmas informações para exibir comentários em hover, completar símbolos, navegar para definições e localizar referências. O hover é uma consulta rápida; para detalhes sobre concorrência, erros, efeitos colaterais e compatibilidade, abra a documentação completa.
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.
Como avaliar um exemplo oficial
Exemplos do pkg.go.dev normalmente vêm de funções Example nos arquivos _test.go. Eles têm uma vantagem importante: podem ser compilados e executados por go test, o que reduz a chance de ficarem quebrados silenciosamente.
Ao encontrar um exemplo útil, siga este fluxo:
- confirme o import path e a versão;
- abra o exemplo completo, não apenas a linha destacada;
- observe se há
defer, fechamento de recursos e tratamento de erro; - adapte nomes e dados, preservando o contrato da API;
- escreva um teste pequeno no seu módulo;
- rode
go test ./...e, quando aplicável,go vet ./....
Para aprender a escrever exemplos que também viram documentação, crie uma função ExampleNome em um arquivo _test.go e inclua uma seção // Output: quando a saída for determinística:
func ExampleSaudacao() {
fmt.Println(Saudacao("Gopher"))
// Output: Olá, Gopher!
}
Esse padrão conecta documentação e teste executável. Para uma estratégia mais ampla, veja testes em Go e table-driven tests.
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 ou do módulo 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?
- o tipo é seguro para uso concorrente?
- o chamador precisa fechar, cancelar ou liberar algum recurso?
Esse checklist evita bugs comuns: cliente HTTP sem timeout, erro ignorado, pacote antigo, dependência desnecessária, recurso não fechado e uso de API experimental sem perceber.
Perguntas frequentes
Onde fica a documentação oficial de Go?
Os guias oficiais, a especificação, as release notes e os tutoriais ficam em go.dev/doc. A referência pesquisável de pacotes da standard library e de módulos públicos fica em pkg.go.dev. No terminal, use go doc e go help.
A documentação Go existe em português?
Parte do material introdutório, como o Tour of Go, possui tradução, mas a referência oficial é majoritariamente em inglês. Você não precisa traduzir tudo: identifique pacote, tipo, função, parâmetros, retorno, erros, exemplos e avisos de compatibilidade. Este guia funciona como mapa em português para a fonte oficial.
Qual documentação devo ler primeiro para aprender Go?
Comece pelo Tour of Go, depois consulte pacotes conforme constrói algo: fmt, strings, errors, context, net/http, encoding/json, testing e log/slog. Para o toolchain, aprenda go help mod, go help testflag, go fmt, go vet e go test.
Como saber se a documentação corresponde à minha versão?
Rode go version para a standard library e go list -m all para dependências. No pkg.go.dev, confirme a versão selecionada do módulo. Se a API online não compila localmente, compare a versão em que ela foi adicionada com o go.mod e o toolchain usados pelo projeto.
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.
Última atualização: Julho de 2026 — revisão de versões, exemplos executáveis, gopls e fluxo de consulta da documentação oficial.