Sobes.tech
Junior — Middle

Como parar a execução de uma goroutine após um tempo definido, se o resultado não foi recebido?

sobes.tech IA

Resposta da IA

No Go, para parar a execução de uma goroutine após um tempo determinado, geralmente usa-se select com um temporizador ou um contexto com um tempo limite.

Exemplo com time.After:

select {
case result := <-ch:
    // processar o resultado
case <-time.After(2 * time.Second):
    // tempo limite — resultado não recebido em 2 segundos
}

Exemplo com contexto:

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

select {
case result := <-ch:
    // processar o resultado
case <-ctx.Done():
    // tempo limite ou cancelamento
}

Assim, se o resultado não chegar a tempo, a execução pode ser interrompida e o tempo limite tratado.