Section 8
8-dars — Tsikllar: for
Klassik for, shartli for, cheksiz for, break va continue — bankni qayta-qayta ishlatish
Hozir bankimiz bir marta ishlaydi: bitta amal qiladi va to'xtaydi. Haqiqiy bank esa qayta-qayta menyu ko'rsatishi kerak. Buning uchun tsikl (loop) — for ishlatamiz.
for nima?
Tsikl — kodni bir necha marta takrorlash usuli. Go'da faqat bitta tsikl bor: for. (Boshqa tillardagi while ham Go'da for orqali yoziladi.) Lekin for juda moslashuvchan — uch xil ko'rinishi bor.
1. Klassik for (hisoblagich bilan)
for i := 0; i < 200; i++ {
// menyu va amallar shu yerda takrorlanadi
}for ning uch qismi (nuqta-vergul ; bilan ajratilgan):
| Qism | Misol | Nima qiladi |
|---|---|---|
| Boshlanish | i := 0 | hisoblagich yaratiladi (bir marta) |
| Shart | i < 200 | rost ekan — davom etadi |
| Qadam | i++ | har aylanishdan keyin i ga 1 qo'shiladi |
i++ — i = i + 1 ning qisqasi. Bu tsikl 200 marta aylanadi (i 0 dan 199 gacha).
2. Shartli for (faqat shart bilan)
Boshlanish va qadamni tashlab, faqat shart qoldirsangiz — boshqa tillardagi while ga o'xshaydi:
for someCondition {
// shart true bo'lguncha takrorlanadi
}someCondition — bool qiymat qaytaradigan ifoda yoki o'zgaruvchi. U false bo'lguncha takrorlanadi.
3. Cheksiz for { }
Bankda nechta amal bo'lishini oldindan bilmaymiz, shuning uchun cheksiz tsikl — shartsiz for:
fmt.Println("Welcome to Go Bank!")
for {
// menyu ko'rsatish
// choice o'qish
// if/else if/else ...
}for { } to'xtatilmaguncha abadiy aylanadi. Foydalanuvchini bir marta kutib olamiz, shuning uchun Welcome ni tsikldan tashqarida qoldiramiz. Tsiklni qanday to'xtatamiz? — break bilan.
Cheksiz tsiklni to'xtatishning bir yo'li — terminalda CTRL + C. Lekin dasturda toza chiqish yo'lini berishimiz kerak.
4. break — tsikldan chiqish
break tsiklni butunlay to'xtatadi va tsikldan keyingi qatorga o'tadi. Bankda foydalanuvchi 4 (Exit) tanlasa:
for {
// ... menyu, choice
if choice == 1 {
fmt.Println("Your balance is", accountBalance)
} else if choice == 2 {
// deposit ...
} else if choice == 3 {
// withdraw ...
} else {
fmt.Println("Goodbye!")
break
}
}
fmt.Println("Thanks for choosing our bank")Agar
breako'rnigareturnishlatsangiz, u butun funksiyani tugatadi — shunda tsikldan keyingi"Thanks..."hech qachon chiqmaydi. IDE buni "erishib bo'lmaydigan kod" (unreachable) deb ogohlantiradi. Shuning uchun bu yerdabreakto'g'riroq.
5. continue — aylanishni o'tkazib yuborish
break butun tsiklni to'xtatadi. continue esa faqat shu aylanishni tashlab, tsiklning boshiga qaytadi:
if depositAmount <= 0 {
fmt.Println("Invalid amount. Must be greater than 0.")
continue
}Bu yerda: noto'g'ri summa kiritilsa, xabar chiqaramiz va menyuni qaytadan ko'rsatamiz (dasturni to'xtatmaymiz). Oldin return ishlatardik — u butun dasturni tugatardi. Tsikl ichida continue ko'pincha to'g'riroq: foydalanuvchiga yana imkon beradi.
| So'z | Nima qiladi |
|---|---|
break | tsiklni butunlay to'xtatadi |
continue | shu aylanishni tashlab, keyingi aylanishga o'tadi |
return | butun funksiyani tugatadi |
O'zingiz sinab ko'ring
- Bank menyusini
for { }ichiga oling — endi qayta-qayta ishlasin.Welcomeni tsikldan tashqarida qoldiring. 4(Exit) tanlangandabreakqiling, tsikldan keyin "Thanks" chiqaring.- Noto'g'ri depozit (
<= 0) holatidacontinueishlating va menyu qaytadan chiqishini ko'ring. elseichidabreako'rnigareturnqo'ying — "Thanks" chiqadimi? IDE nima deydi?for i := 0; i < 5; i++yozib,ini har aylanishda chiqaring.
← 7-dars · → 9-dars — switch