Sobes.tech
Junior — Middle

Por que a função Context.WithTimeout retorna dois valores e como eles são usados no contexto do tratamento de tempos limite?

sobes.tech IA

Resposta da IA

A função context.WithTimeout em Go devolve dois valores:

  1. O novo contexto (Context), que é automaticamente cancelado após o tempo limite definido.
  2. A função de cancelamento (CancelFunc), que pode ser chamada para terminar antecipadamente o trabalho com o contexto.

Uso:

  • O novo contexto é usado para controlar o tempo de execução das operações: se o tempo expirar, o contexto é cancelado e as operações relacionadas recebem um sinal de cancelamento.
  • A função de cancelamento é chamada para libertar recursos associados ao contexto se a operação terminar antes do tempo limite.

Exemplo:

timedCtx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel() // garante a libertação de recursos

select {
case <-doWork(timedCtx):
    fmt.Println("Trabalho concluído")
case <-timedCtx.Done():
    fmt.Println("Tempo esgotado ou cancelamento")
}

Desta forma, os valores devolvidos permitem definir um limite de tempo e controlar o cancelamento das operações.