Methods on the Limiter
Limiter ustidagi metodlar
The Rate Limiter darsida faqat ma'lumotni saqlaydigan struct yaratdingiz. Endi unga xatti-harakat qo'shamiz — mijozning joriy sonini o'qish va uni qayta boshlash (reset qilish) uchun metodlar. Bu Pointers & Memory kursidagi "struct ustidagi metodlar orqali holatni boshqarish" g'oyasining davomi.
func (l *RateLimiter) Count(id string) int {
return l.counts[id]
}
func (l *RateLimiter) Reset(id string) {
delete(l.counts, id)
}Count — Go Basics kursida ko'rgan map'dan o'qish andazasi: mavjud bo'lmagan kalit uchun intning nol qiymati (0) avtomatik qaytadi, alohida tekshirish shart emas. Reset esa deletedan foydalanadi — mijozning hisoblagichini butunlay olib tashlaydi, shunda keyingi Count chaqiruvi yana 0dan boshlanadi.
>_ Exercise
RateLimiter uchun Count(id string) int metodini yozing — mijozning joriy so'rovlar sonini qaytaradi. Reset(id string) metodini yozing — mijozning hisoblagichini butunlay olib tashlaydi.
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Count mavjud bo'lmagan kalit uchun map'ning nol qiymatidan foydalanadi, Reset esa delete bilan kalitni butunlay olib tashlaydi. Ikkalasi ham struct holatini metodlar orqali boshqarishning tabiiy usuli.
NEXT UP
Allow or Deny
$ go run main.go
Kodingizni ishga tushiring