Junior — Middle
98
Go тілінде операцияның орындалу уақытын шектеу үшін context.WithTimeout қалай қолдануға болады?
AI-дан жауап
sobes.tech AI
В Go для ограничения времени выполнения операции часто используют контекст с таймаутом через функцию context.WithTimeout. Она возвращает новый контекст и функцию отмены. Если операция не успевает завершиться до истечения таймаута, контекст автоматически отменяется.
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case result := <-someLongRunningOperation(ctx):
fmt.Println("Operation finished:", result)
case <-ctx.Done():
fmt.Println("Timeout exceeded:", ctx.Err())
}
Здесь someLongRunningOperation должна принимать ctx и периодически проверять ctx.Done() для корректного прерывания. Это позволяет безопасно прервать операцию по таймауту.