Что такое cancel в context.WithTimeout и зачем его вызывать?

Да, рекомендуется обязательно вызывать функцию Cancel, возвращаемую context.WithTimeout, чтобы освободить ресурсы, связанные с контекстом, как только он больше не нужен.

Короткий ответ

Что ответить на собеседовании

Да, рекомендуется обязательно вызывать функцию Cancel, возвращаемую context.WithTimeout, чтобы освободить ресурсы, связанные с контекстом, как только он больше не нужен. Даже если тайм-аут сработает и контекст автоматически отменится, вызов Cancel помогает избежать утечек ресурсов.

Подробный разбор

Ответ с пояснениями

Да, рекомендуется обязательно вызывать функцию Cancel, возвращаемую context.WithTimeout, чтобы освободить ресурсы, связанные с контекстом, как только он больше не нужен. Даже если тайм-аут сработает и контекст автоматически отменится, вызов Cancel помогает избежать утечек ресурсов.

Пример:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

// Используем ctx в операциях

Вызов defer cancel() гарантирует, что ресурсы будут освобождены при выходе из функции, даже если операция завершилась раньше тайм-аута.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее