Junior — Middle
Como implementar uma restrição de tempo de execução de uma operação usando context.WithTimeout em Go?
sobes.tech IA
Resposta da IA
No Go, para limitar o tempo de execução de uma operação, frequentemente usa-se um contexto com um timeout através da função context.WithTimeout. Ela retorna um novo contexto e uma função de cancelamento. Se a operação não terminar antes do tempo limite, o contexto é cancelado automaticamente.
Exemplo de uso:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Operação finalizada:", result)
case <-ctx.Done():
fmt.Println("Tempo limite excedido:", ctx.Err())
}
Aqui, someLongRunningOperation deve aceitar ctx e verificar periodicamente ctx.Done() para uma interrupção adequada. Isso permite cancelar a operação com segurança em caso de timeout.