Назад к вопросам
Junior — Middle
76
Каким образом можно остановить выполнение горутины по истечении заданного времени, если результат не был получен?
Компании, где спрашивали
IDT
Ответ от нейросети
sobes.tech AI
В Go для остановки выполнения горутины по истечении заданного времени обычно используют select с таймером или контекст с таймаутом.
Пример с time.After:
select {
case result := <-ch:
// обработать результат
case <-time.After(2 * time.Second):
// таймаут — результат не получен за 2 секунды
}
Пример с контекстом:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-ch:
// обработать результат
case <-ctx.Done():
// таймаут или отмена
}
Таким образом, если результат не приходит вовремя, выполнение можно прервать и обработать таймаут.