Section 7
7-dars — Shartlar: if / else
if, ==, taqqoslash va mantiqiy operatorlar, bool, else if, else, nested if va return
Bu darsdan boshlab yangi loyiha — Go Bank (terminal banki). U menyu ko'rsatadi, foydalanuvchi tanlaydi: balansni ko'rish, pul qo'yish yoki yechish. Buning uchun dasturga qaror qabul qilishni o'rgatamiz — if orqali.
Menyu va tanlov
package main
import "fmt"
func main() {
fmt.Println("Welcome to Go Bank!")
fmt.Println("What do you want to do?")
fmt.Println("1. Check balance")
fmt.Println("2. Deposit money")
fmt.Println("3. Withdraw money")
fmt.Println("4. Exit")
var choice int
fmt.Print("Your choice: ")
fmt.Scan(&choice)
fmt.Println("Your choice:", choice)
}choice ni int qildik, chunki u 1/2/3/4 — butun son. Endi har bir tanlovga boshqa-boshqa javob beramiz.
if — agar
if choice == 1 {
fmt.Println("Your balance is", accountBalance)
}if so'zidan keyin shart keladi. Shart rost (true) bo'lsa, { } ichidagi kod ishlaydi; yolg'on (false) bo'lsa — o'tkazib yuboriladi.
== va = — eng ko'p qilinadigan xato
| Belgi | Nomi | Vazifasi |
|---|---|---|
= | qiymat berish | x = 5 (x ga 5 ni ber) |
== | taqqoslash | x == 5 (x 5 ga tengmi?) |
Shartda tenglikni tekshirganda ikkita
=(==) ishlatiladi. Bittasini (=) yozsangiz — xato. Adashtirmang.
Taqqoslash operatorlari
| Operator | Ma'nosi |
|---|---|
== | teng |
!= | teng emas |
> | katta |
< | kichik |
>= | katta yoki teng |
<= | kichik yoki teng |
Mantiqiy operatorlar va bool
Shart natijasi har doim bool (true/false). Bir nechta shartni birlashtirish mumkin:
&&(VA) — ikkala shart ham rost bo'lsa:yosh >= 18 && pasportBor||(YOKI) — kamida bittasi rost bo'lsa:choice == 1 || choice == 2
Shart natijasini o'zgaruvchiga ham saqlash mumkin (uning tipi bool bo'ladi):
wantsCheckBalance := choice == 1 // bool
if wantsCheckBalance {
// ...
}Odatda qisqa shartni
ifbilan bir qatorda yozasiz, alohida o'zgaruvchi yaratmaysiz.
else if va else
Bir nechta holatni tekshirish uchun else if, hech qaysi mos kelmasa else:
var accountBalance = 1000.0
if choice == 1 {
fmt.Println("Your balance is", accountBalance)
} else if choice == 2 {
fmt.Print("Your deposit: ")
var depositAmount float64
fmt.Scan(&depositAmount)
accountBalance += depositAmount
fmt.Println("Balance updated! New amount:", accountBalance)
} else if choice == 3 {
fmt.Print("Withdrawal amount: ")
var withdrawalAmount float64
fmt.Scan(&withdrawalAmount)
accountBalance -= withdrawalAmount
fmt.Println("Balance updated! New amount:", accountBalance)
} else {
fmt.Println("Goodbye!")
}Go yuqoridan pastga tekshiradi va birinchi mos kelgan blokni bajaradi, qolganlarini tashlab ketadi.
else ifvs alohidaif:else iffaqat oldingi shart bajarilmaganda tekshiriladi. Ikkita alohidaifyozsangiz, ikkinchisi har doim tekshiriladi. Har birifdaelse ifko'p bo'lishi mumkin, lekinelsebitta.
+= va -=
accountBalance += depositAmount — bu accountBalance = accountBalance + depositAmount ning qisqasi. Xuddi shunday -= ayiradi. accountBalance ni 1000.0 (.0 bilan) yozdik — float64 bo'lsin, foydalanuvchi 5.5 ham qo'sha olsin.
Ichma-ich (nested) if va return
if ichida yana if bo'lishi mumkin — masalan pulni tekshirish (validatsiya) uchun:
} else if choice == 3 {
fmt.Print("Withdrawal amount: ")
var withdrawalAmount float64
fmt.Scan(&withdrawalAmount)
if withdrawalAmount <= 0 {
fmt.Println("Invalid amount. Must be greater than 0.")
return
}
if withdrawalAmount > accountBalance {
fmt.Println("Invalid amount. You can't withdraw more than you have.")
return
}
accountBalance -= withdrawalAmount
fmt.Println("Balance updated! New amount:", accountBalance)
}return funksiyani (bu yerda main ni) darhol to'xtatadi — undan keyingi kod umuman bajarilmaydi. Ya'ni noto'g'ri summada xabar chiqarib, dasturdan chiqib ketamiz. Bu — "erta to'xtatish", kodni toza qiladi.
mainhech narsa qaytarmaydi, lekin bo'shreturn(qiymatsiz) bemalol ishlaydi — u shunchaki bajarilishni to'xtatadi.
O'zingiz sinab ko'ring
- Menyuni yozing,
choice == 1bo'lganda balansni chiqaring. 2(deposit) va3(withdraw) holatlarinielse ifbilan qo'shing.- Depozit uchun tekshiruv qo'shing:
depositAmount <= 0bo'lsa, xato chiqaribreturn. ==o'rniga adashib=yozib ko'ring — Go qanday xato beradi?accountBalance := 1000(.0siz) yozsangiz, foydalanuvchi5.5qo'sha oladimi? Sinab ko'ring.
← 6-dars · → 8-dars — Tsikllar: for