Back to questions
Senior
6
Для чего используется context в Go?
Companies where asked
Магнит Тех
Answer from AI
sobes.tech AI
В Go пакет context используется для передачи сквозных сигналов отмены, дедлайнов и других значений между горутинами и функциями. Это позволяет контролировать жизненный цикл операций, особенно в сетевых запросах, обработке данных и параллельных вычислениях.
Основные применения context:
- Отмена операций (например, при таймауте или отмене пользователем).
- Передача дедлайна (времени, к которому операция должна завершиться).
- Передача значений, связанных с запросом (например, ID пользователя, токены).
Пример использования:
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
// Отмена по истечении 5 секунд
def fetchData(ctx context.Context) error {
select {
case <-time.After(time.Second * 10):
// Долгая операция
return nil
case <-ctx.Done():
// Отмена операции
return ctx.Err()
}
}
err := fetchData(ctx)
if err != nil {
fmt.Println("Operation cancelled or timed out:", err)
}
cancel()
Таким образом, context помогает управлять временем жизни и отменой операций, улучшая контроль над конкурентностью и ресурсами.