Простейший — time.Tick: ticker := time.NewTicker(time.Second/ratePerSec). Перед каждой операцией <-ticker.C — блокируешься пока не придёт тик. Для burst — буферизованный канал: limiter := make(chan struct{}, burst), заполняешь его, горутина добавляет токены с интервалом. Берёшь токен: <-limiter. Это token bucket алгоритм. В продакшене используй golang.org/x/time/rate — он уже реализует token bucket с Wait, Allow, Reserve. Но на собесе хотят видеть реализацию на каналах.
Как реализовать rate limiter через каналы?
Middle
288 просмотровAFK Offer AI
Что такое API error response формат?