Section 9

9-dars — switch

switch, case, default, Go'da break shartmasligi va switch ichida break ning maxsus ma'nosi


Bankimizda if ... else if ... else if ... else zanjiri uzayib ketdi. Bir xil o'zgaruvchini (choice) ko'p marta taqqoslaganda Go'da chiroyliroq usul bor — switch.

if/else muammosi

if choice == 1 {
	// ...
} else if choice == 2 {
	// ...
} else if choice == 3 {
	// ...
} else {
	// ...
}

Hammasi bitta choice ni tekshiryapti. switch buni qisqaroq va o'qishga osonroq qiladi.


switch bilan qayta yozish

switch choice {
case 1:
	fmt.Println("Your balance is", accountBalance)
case 2:
	fmt.Print("Your deposit: ")
	var depositAmount float64
	fmt.Scan(&depositAmount)
 
	if depositAmount <= 0 {
		fmt.Println("Invalid amount. Must be greater than 0.")
		continue
	}
 
	accountBalance += depositAmount
	fmt.Println("Balance updated! New amount:", accountBalance)
case 3:
	fmt.Print("Withdrawal amount: ")
	var withdrawalAmount float64
	fmt.Scan(&withdrawalAmount)
 
	if withdrawalAmount <= 0 {
		fmt.Println("Invalid amount. Must be greater than 0.")
		continue
	}
 
	if withdrawalAmount > accountBalance {
		fmt.Println("Invalid amount. You can't withdraw more than you have.")
		continue
	}
 
	accountBalance -= withdrawalAmount
	fmt.Println("Balance updated! New amount:", accountBalance)
default:
	fmt.Println("Goodbye!")
	fmt.Println("Thanks for choosing our bank")
	return
}

Qismlarni tushunish

QismMa'nosi
switch choice"choice qiymatiga qarab tanla"
case 1:"agar choice == 1 bo'lsa"
case 2:"agar choice == 2 bo'lsa"
default:"yuqoridagilarning hech qaysi to'g'ri kelmasa"

default — bu if/else dagi oxirgi else bilan bir xil. Har bir case ichida bir nechta qatorli kod bo'lishi mumkin.


Muhim 1: Go'da break shart emas

C, Java yoki JavaScript'da har bir case oxirida break yozish kerak — aks holda keyingi case ga "oqib o'tadi". Go'da bunday emas: Go har bir case dan keyin o'zi to'xtaydi, faqat bitta case ishlaydi. Bu — kamroq xato degani. Shuning uchun kodda case ichida break yo'q.

Muhim 2: switch ichida break ning boshqa ma'nosi

Diqqat: switch tsikl ichida turibdi. Agar case ichida break yozsangiz, u tsikldan emas, switch dan chiqadi. Shuning uchun bu yerda tsiklni boshqarish uchun:

  • noto'g'ri summada → continue (menyuni qaytarish)
  • chiqishda (default) → return (butun dasturni tugatish)

Demak: agar kodingizda tsikldan break bilan chiqish kerak bo'lsa, switch noto'g'ri tanlov — if/else if ishlating. Aks holda switch qulay.


Qachon if, qachon switch?

  • switch — bitta qiymatni bir nechta aniq variant bilan solishtirganda (choice 1/2/3/4).
  • if — murakkab shartlarda (amount <= 0, a > b && c < d).

Ikkalasini birga ishlatish normal: bizning kodda switch ichida if lar bor.


O'zingiz sinab ko'ring

  1. 7-darsdagi if/else if zanjirini switch ga aylantiring.
  2. case 1, case 2, case 3 va default ni to'ldiring.
  3. Noto'g'ri summalarda continue ishlatib, menyu qaytishini tekshiring.
  4. default ichida return o'rniga break qo'ying — dastur tsikldan chiqadimi yoki cheksiz aylanadimi? Nega?
  5. Foydalanuvchi 9 kiritsa nima bo'ladi? (default.) Sinab ko'ring.

8-dars · → 10-dars — Fayllar bilan ishlash