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:
- O novo contexto (
Context), que é automaticamente cancelado após o tempo limite definido. - 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.