Pacote Context
Prazos, cancelamento e valores no escopo da requisição. Os resultados aparecem na mesma "fence": comentários // na mesma linha quando curtos, blocos // de múltiplas linhas abaixo da amostra quando não.
Busque em todas as páginas da documentação
Prazos, cancelamento e valores no escopo da requisição. Os resultados aparecem na mesma "fence": comentários // na mesma linha quando curtos, blocos // de múltiplas linhas abaixo da amostra quando não.
Sinal de cancelamento manual.
ctx, cancel := context.WithCancel(context.Background())
cancel()
ctx.Err() // context.CanceledCancelamento automático após a duração.
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)
defer cancel()
<-ctx.Done()
errors.Is(ctx.Err(), context.DeadlineExceeded) // trueArmazena dados no escopo da requisição - use chaves tipadas.
type key int
const userKey key = 0
ctx := context.WithValue(context.Background(), userKey, "ada")
ctx.Value(userKey) // "ada"Verifica por que o contexto terminou.
ctx, cancel := context.WithCancel(context.Background())
cancel()
errors.Is(ctx.Err(), context.Canceled) // trueBackground é a raiz; TODO é um placeholder.
context.Background() != nil // trueCancela em um tempo absoluto.
ctx, cancel := context.WithDeadline(context.Background(), time.Now().Add(time.Hour))
defer cancel()
ctx.Err() == nil // true até o prazoAguarda o cancelamento ou o trabalho.
ctx, cancel := context.WithCancel(context.Background())
cancel()
select {
case <-ctx.Done():
errors.Is(ctx.Err(), context.Canceled) // true
}Contexto é o primeiro parâmetro por convenção.
// func Load(ctx context.Context, id string) errorNão armazene Contexto dentro de structs de longa duração - passe como parâmetro.
// prefira func (s *Svc) Get(ctx context.Context, id string)Derivado da requisição.
// ctx := r.Context()WithCancelCause para razões de cancelamento mais ricas.
// ctx, cancel := context.WithCancelCause(parent)
// cancel(fmt.Errorf("reason"))Usar Background no meio da pilha perde o cancelamento - passe o contexto pai.
// errado: context.Background() dentro de helpers de bibliotecaTimeouts filhos devem ser menores que o pai quando aninhados.
// pai 5s, filho WithTimeout(pai, time.Second)Executa uma função após o cancelamento (Go 1.21+).
// stop := context.AfterFunc(ctx, func() { ... })Tipos de chave privados evitam colisões.
type ctxKey struct{}
ctx := context.WithValue(context.Background(), ctxKey{}, 1)
ctx.Value(ctxKey{}) // 1Versões da Stack: Go 1.26.x · chi/gin/echo latest (verificar na compilação)
Revisado por Chris St. John·Última atualização: 18 de jul. de 2026