GoDasturchi
Loop Variations

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:

example.go
count := 3
for count > 0 {
	fmt.Println(count)
	count--
}
// Natija: 3, 2, 1

Bu 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:

example.go
n := 1
for {
	if n > 100 {
		break
	}
	n *= 2
}
fmt.Println(n) // 128

Cheksiz 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:

example.go
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.

Hints (0/3)

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

🔒🔒🔒🔒
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

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:

example.go
count := 3
for count > 0 {
	fmt.Println(count)
	count--
}
// Natija: 3, 2, 1

Bu 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:

example.go
n := 1
for {
	if n > 100 {
		break
	}
	n *= 2
}
fmt.Println(n) // 128

Cheksiz 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:

example.go
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.

Hints (0/3)

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