Где и как запустить функцию cleanup? Как передать контекст в rate limiter?

Функцию cleanup обычно запускают в конце жизненного цикла приложения или горутины, чтобы освободить ресурсы, например, закрыть соединения или остановить таймеры.

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

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

Функцию cleanup обычно запускают в конце жизненного цикла приложения или горутины, чтобы освободить ресурсы, например, закрыть соединения или остановить таймеры. В Go часто используют defer для вызова cleanup сразу после инициализации ресурсов:

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

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

Функцию cleanup обычно запускают в конце жизненного цикла приложения или горутины, чтобы освободить ресурсы, например, закрыть соединения или остановить таймеры. В Go часто используют defer для вызова cleanup сразу после инициализации ресурсов:

func main() {
    resource := acquireResource()
    defer resource.cleanup()
    // основная логика
}

Для передачи контекста в rate limiter можно использовать пакет context. Например, если у вас есть rate limiter, который должен учитывать контекст (например, отмену или дедлайн), вы передаёте context.Context в методы limiter'а:

func (rl *RateLimiter) Allow(ctx context.Context) bool {
    select {
    case <-ctx.Done():
        return false
    case <-rl.tokenBucket:
        return true
    }
}

Таким образом, контекст позволяет контролировать поведение rate limiter, например, прерывать ожидание при отмене операции.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку