Middle+
Pourquoi passer le contexte en premier argument dans Go?
sobes.tech IA
Réponse de l'IA
В Go context прокидывается первым аргументом в функции и методы, чтобы обеспечить единый способ управления временем жизни запроса, отменой и передачей метаданных.
Основные причины:
- Отмена операций: позволяет отменить долгие или зависшие операции, например, при закрытии HTTP-запроса.
- Тайм-ауты и дедлайны: можно задать ограничение по времени выполнения.
- Передача данных: через
contextможно передавать информацию, например, идентификаторы запросов для логирования.
Стандартом является, что context.Context всегда первый параметр, чтобы было очевидно, что функция поддерживает управление контекстом.
Пример:
func ProcessRequest(ctx context.Context, data string) error {
select {
case <-time.After(5 * time.Second):
// обработка
return nil
case <-ctx.Done():
return ctx.Err() // отмена или тайм-аут
}
}
Такой подход улучшает контроль над выполнением и упрощает отмену операций в сложных системах.