Вопрос: Как ограничить время выполнения через context + select?
Go
Middle
Без компании
Вопрос: Как ограничить время выполнения через context + select?
Ответы
```go
ctx, cancel := context.WithTimeout(context.Background(), 200*time.Millisecond)
defer cancel()
done := make(chan error, 1)
go func() { done <- doWork() }()
select {
case err := <-done:
_ = err
case <-ctx.Done():
fmt.Println("timeout")
}
```
**Как это работает:** контекст сигнализирует отмену, но goroutine должна корректно завершаться (cooperative cancellation).