select с time.After: select { case result := <-ch: // ok, case <-time.After(5 * time.Second): // timeout }. Или через context: ctx, cancel := context.WithTimeout(ctx, 5*time.Second); defer cancel(). Передаёшь ctx в горутину, она проверяет ctx.Done(). Context лучше — отмена каскадная, time.After может утечь если результат пришёл раньше (в Go 1.23 фиксится). Для HTTP запросов: http.Client{Timeout: 10 * time.Second} — самый простой вариант.
Как реализовать timeout pattern?
Middle
346 просмотровAFK Offer AI
Как профилировать в production?