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
| Qism | Ma'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
breakbilan chiqish kerak bo'lsa,switchnoto'g'ri tanlov —if/else ifishlating. Aks holdaswitchqulay.
Qachon if, qachon switch?
switch— bitta qiymatni bir nechta aniq variant bilan solishtirganda (choice1/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
- 7-darsdagi
if/else ifzanjiriniswitchga aylantiring. case 1,case 2,case 3vadefaultni to'ldiring.- Noto'g'ri summalarda
continueishlatib, menyu qaytishini tekshiring. defaultichidareturno'rnigabreakqo'ying — dastur tsikldan chiqadimi yoki cheksiz aylanadimi? Nega?- Foydalanuvchi
9kiritsa nima bo'ladi? (default.) Sinab ko'ring.