GoDasturchi
The Rate Limiter

The Rate Limiter

Rate limiter

Endi barcha qismlar tayyor: mijozlarni tozalash (Input Cleanup), tekshirish (Request Gatekeeper), sanash (Counting Requests) va ko'rsatish (Formatting Results). Vaqt keldi — buларni bitta markaziy struct'ga jamlash: `RateLimiter`. U Counting Requests darsidagi hisoblagich g'oyasini oladi va unga limit tushunchasini qo'shadi.

example.go
type RateLimiter struct {
    limit  int
    counts map[string]int
}

func NewRateLimiter(limit int) *RateLimiter {
    return &RateLimiter{limit: limit, counts: make(map[string]int)}
}

limit — har bir mijoz uchun ruxsat etilgan maksimal so'rovlar soni. Hozircha struct faqat ma'lumotni saqlaydi — keyingi ikki darsda unga xatti-harakat (metodlar) qo'shasiz.

>_ Exercise

limit int va counts map[string]int maydonlariga ega RateLimiter struct'ini yozing. NewRateLimiter(limit int) *RateLimiter konstruktorini yozing — u berilgan limit bilan, ichki map'i ishga tushirilgan RateLimiter qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/2)

Key Takeaway

Key Takeaway:

RateLimiter struct'i ilgari alohida-alohida ko'rgan ikkita g'oyani birlashtiradi: mijoz bo'yicha hisoblagich (map[string]int) va sobit chegara (limit). Konstruktor ikkalasini ham to'g'ri boshlang'ich holatda tayyorlaydi.

NEXT UP

Methods on the Limiter

OUTPUT

$ go run main.go
Kodingizni ishga tushiring

The Rate Limiter

Rate limiter

Endi barcha qismlar tayyor: mijozlarni tozalash (Input Cleanup), tekshirish (Request Gatekeeper), sanash (Counting Requests) va ko'rsatish (Formatting Results). Vaqt keldi — buларni bitta markaziy struct'ga jamlash: `RateLimiter`. U Counting Requests darsidagi hisoblagich g'oyasini oladi va unga limit tushunchasini qo'shadi.

example.go
type RateLimiter struct {
    limit  int
    counts map[string]int
}

func NewRateLimiter(limit int) *RateLimiter {
    return &RateLimiter{limit: limit, counts: make(map[string]int)}
}

limit — har bir mijoz uchun ruxsat etilgan maksimal so'rovlar soni. Hozircha struct faqat ma'lumotni saqlaydi — keyingi ikki darsda unga xatti-harakat (metodlar) qo'shasiz.

>_ Exercise

limit int va counts map[string]int maydonlariga ega RateLimiter struct'ini yozing. NewRateLimiter(limit int) *RateLimiter konstruktorini yozing — u berilgan limit bilan, ichki map'i ishga tushirilgan RateLimiter qaytaradi.

Stuck? Reveal a hint to help you.

Hints (0/2)

Key Takeaway

Key Takeaway:

RateLimiter struct'i ilgari alohida-alohida ko'rgan ikkita g'oyani birlashtiradi: mijoz bo'yicha hisoblagich (map[string]int) va sobit chegara (limit). Konstruktor ikkalasini ham to'g'ri boshlang'ich holatda tayyorlaydi.

NEXT UP

Methods on the Limiter