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

QismMisolNima qiladi
Boshlanishi := 0hisoblagich yaratiladi (bir marta)
Sharti < 200rost ekan — davom etadi
Qadami++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
}

someConditionbool 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 break o'rniga return ishlatsangiz, u butun funksiyani tugatadi — shunda tsikldan keyingi "Thanks..." hech qachon chiqmaydi. IDE buni "erishib bo'lmaydigan kod" (unreachable) deb ogohlantiradi. Shuning uchun bu yerda break to'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'zNima qiladi
breaktsiklni butunlay to'xtatadi
continueshu aylanishni tashlab, keyingi aylanishga o'tadi
returnbutun funksiyani tugatadi

O'zingiz sinab ko'ring

  1. Bank menyusini for { } ichiga oling — endi qayta-qayta ishlasin. Welcome ni tsikldan tashqarida qoldiring.
  2. 4 (Exit) tanlanganda break qiling, tsikldan keyin "Thanks" chiqaring.
  3. Noto'g'ri depozit (<= 0) holatida continue ishlating va menyu qaytadan chiqishini ko'ring.
  4. else ichida break o'rniga return qo'ying — "Thanks" chiqadimi? IDE nima deydi?
  5. for i := 0; i < 5; i++ yozib, i ni har aylanishda chiqaring.

7-dars · → 9-dars — switch