Sobes.tech
Senior

O que é o contexto (context) em Go e para que serve?

sobes.tech IA

Resposta da IA

No Go, context é um pacote e um tipo usados para transmitir sinais de cancelamento, limites de tempo e outros dados relevantes para a execução entre goroutines.

As principais funções do context:

  • Permite cancelar operações (por exemplo, requisições a bancos de dados ou HTTP) quando o tempo limite é atingido ou quando o usuário cancela.
  • Transmite limites de tempo (deadlines) para operações.
  • Permite transmitir valores entre funções (por exemplo, identificadores de requisições).

Exemplo de uso:

ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()

select {
case result := <-doWork(ctx):
    fmt.Println("Resultado:", result)
case <-ctx.Done():
    fmt.Println("Operação cancelada ou tempo limite atingido")
}

Aqui, ctx é passado para a função doWork, que pode interromper seu trabalho se o contexto for cancelado ou se o tempo limite for atingido. Isso ajuda a gerenciar o tempo de vida das operações e recursos em programas concorrentes.