Loop Variations
Siz klassik for siklini ko'rdingiz. Go'ning for kalit so'zida doimo duch keladigan yana bir nechta shakllari bor.
While uslubidagi sikl
Agar sizga faqat shart kerak bo'lsa, init va post qismlarini olib tashlang:
count := 3
for count > 0 {
fmt.Println(count)
count--
}
// Natija: 3, 2, 1Bu boshqa tillardagi while sikli kabi ishlaydi. Shart to'g'ri bo'lguncha ishlashda davom etadi. Nechta iteratsiya kerakligini oldindan bilmasangiz, undan foydalaning.
Cheksiz sikl
Hammasini olib tashlang, sikl abadiy ishlaydi. Chiqish uchun break dan foydalaning:
n := 1
for {
if n > 100 {
break
}
n *= 2
}
fmt.Println(n) // 128Cheksiz sikllar serverlarda va hodisa ishlovchilarida (event handler) keng tarqalgan — dastur biror narsa uni to'xtatishni aytmaguncha ishlaydigan istalgan joyda.
Range sikli
Biror narsani belgilangan marta takrorlamoqchi bo'lsangiz, range eng toza usul:
for i := range 5 {
fmt.Println(i) // 0, 1, 2, 3, 4
}Butun son ustidan range 0 dan n-1 gacha sanaydi. Keyinroq range dan slice va map'lar ustidan aylanish uchun ham foydalanasiz.
>_ Exercise
Siz jamg'arma prognozini tuzyapsiz. Boshlang'ich balance va years soni berilgan holda, har yili 10% foiz qo'shilgandan keyingi yakuniy balansni hisoblang.
Har yili balans o'zining 10% iga o'sadi: balance += balance / 10.
Yillar bo'yicha aylanish uchun range siklidan foydalaning: for range years { ... }. Sizga indeks kerak emas, faqat son kerak.
Misollar:
- •
futureBalance(1000, 0)→1000(yil yo'q, o'sish yo'q) - •
futureBalance(1000, 1)→1100 - •
futureBalance(1000, 2)→1210 - •
futureBalance(1000, 5)→1610
Stuck? Reveal a hint to help you.
Key Takeaway
Key Takeaway:
Go'da bitta sikl kalit so'zi bor: for. Klassik, while uslubidagi, cheksiz va range — bularning hammasi bir xil for ning turli shakllaridir.
NEXT UP
Errors Are Values
$ go run main.go
Kodingizni ishga tushiring