GoDasturchi
Making Decisions

Making Decisions

Kodingiz tanlov qilishi kerak bo'ladi. if operatori shart to'g'ri bo'lgandagina kod blokini ishga tushiradi:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
}

Agar temperature 40 bo'lsa, temperature > 35 sharti true bo'ladi, shuning uchun figurali qavslar ichidagi kod ishga tushadi. Agar temperature 20 bo'lsa, shart false bo'ladi va blok butunlay o'tkazib yuboriladi.

Shart yolg'on bo'lganda ishga tushadigan else blokini qo'shishingiz mumkin:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
} else {
	fmt.Println("Not too hot")
}

Bir nechta shart uchun ularni else if bilan zanjirlang. Go tepadan pastga qarab tekshiradi va mos keladigan birinchi blokni ishga tushiradi:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
} else if temperature > 20 {
	fmt.Println("Just right")
} else {
	fmt.Println("Too cold")
}

Agar temperature 25 bo'lsa, birinchi shart (> 35) yolg'on, shuning uchun Go keyingisiga o'tadi. Ikkinchi shart (> 20) to'g'ri, shuning uchun "Just right" chop etiladi va qolgani o'tkazib yuboriladi.

E'tibor beriladigan bir nechta narsa

Shart atrofida qavslar yo'q (aksariyat tillardan farqli), figurali qavslar {} esa majburiy, hatto bitta qatorli bo'lsa ham.

else va else if yopuvchi } bilan bir qatorda bo'lishi shart:

example.go
}                     // ❌ sintaksis xatosi
else if ... {

} else if ... { // ✅

Go har bir qator oxiriga avtomatik nuqta-vergul qo'yadi, shuning uchun alohida qatordagi else Go uni ko'rishidan oldin if ni tugatib qo'yadi.

Shoxobcha ichida o'zgaruvchi belgilash

O'zgaruvchi if dan oldin e'lon qilingan bo'lsa, shoxobchalar ichida unga := bilan emas, = bilan qiymat bering:

example.go
category := ""
if status >= 500 {
	category = "server error"   // = category ga yuqoridagi o'zgaruvchiga qiymat beradi
}

if ichida category := deb yozish yopuvchi } da yo'qolib ketadigan yangi o'zgaruvchi yaratadi, shuning uchun tashqaridagisi "" bo'lib qoladi. Go buni ogohlantirishsiz kompilyatsiya qiladi, bu esa uni oson tuzoqqa aylantiradi.

>_ Exercise

getGrade ichidagi if / else if / else blokini to'ldirib, score parametrini tekshiring va grade ga to'g'ri harfni belgilang:

  • score 90 yoki undan yuqori → "A"
  • score 80 yoki undan yuqori → "B"
  • score 70 yoki undan yuqori → "C"
  • score 60 yoki undan yuqori → "D"
  • score 60 dan past → "F"

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Go'ning if / else if / else tepadan pastga qarab tekshiradi va birinchi mos kelgan blokni ishga tushiradi.

NEXT UP

Logical Operators

🔒🔒🔒🔒
OUTPUT

$ go run main.go
Kodingizni ishga tushiring

Making Decisions

Kodingiz tanlov qilishi kerak bo'ladi. if operatori shart to'g'ri bo'lgandagina kod blokini ishga tushiradi:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
}

Agar temperature 40 bo'lsa, temperature > 35 sharti true bo'ladi, shuning uchun figurali qavslar ichidagi kod ishga tushadi. Agar temperature 20 bo'lsa, shart false bo'ladi va blok butunlay o'tkazib yuboriladi.

Shart yolg'on bo'lganda ishga tushadigan else blokini qo'shishingiz mumkin:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
} else {
	fmt.Println("Not too hot")
}

Bir nechta shart uchun ularni else if bilan zanjirlang. Go tepadan pastga qarab tekshiradi va mos keladigan birinchi blokni ishga tushiradi:

example.go
if temperature > 35 {
	fmt.Println("Too hot")
} else if temperature > 20 {
	fmt.Println("Just right")
} else {
	fmt.Println("Too cold")
}

Agar temperature 25 bo'lsa, birinchi shart (> 35) yolg'on, shuning uchun Go keyingisiga o'tadi. Ikkinchi shart (> 20) to'g'ri, shuning uchun "Just right" chop etiladi va qolgani o'tkazib yuboriladi.

E'tibor beriladigan bir nechta narsa

Shart atrofida qavslar yo'q (aksariyat tillardan farqli), figurali qavslar {} esa majburiy, hatto bitta qatorli bo'lsa ham.

else va else if yopuvchi } bilan bir qatorda bo'lishi shart:

example.go
}                     // ❌ sintaksis xatosi
else if ... {

} else if ... { // ✅

Go har bir qator oxiriga avtomatik nuqta-vergul qo'yadi, shuning uchun alohida qatordagi else Go uni ko'rishidan oldin if ni tugatib qo'yadi.

Shoxobcha ichida o'zgaruvchi belgilash

O'zgaruvchi if dan oldin e'lon qilingan bo'lsa, shoxobchalar ichida unga := bilan emas, = bilan qiymat bering:

example.go
category := ""
if status >= 500 {
	category = "server error"   // = category ga yuqoridagi o'zgaruvchiga qiymat beradi
}

if ichida category := deb yozish yopuvchi } da yo'qolib ketadigan yangi o'zgaruvchi yaratadi, shuning uchun tashqaridagisi "" bo'lib qoladi. Go buni ogohlantirishsiz kompilyatsiya qiladi, bu esa uni oson tuzoqqa aylantiradi.

>_ Exercise

getGrade ichidagi if / else if / else blokini to'ldirib, score parametrini tekshiring va grade ga to'g'ri harfni belgilang:

  • score 90 yoki undan yuqori → "A"
  • score 80 yoki undan yuqori → "B"
  • score 70 yoki undan yuqori → "C"
  • score 60 yoki undan yuqori → "D"
  • score 60 dan past → "F"

Stuck? Reveal a hint to help you.

Hints (0/3)

Key Takeaway

Key Takeaway:

Go'ning if / else if / else tepadan pastga qarab tekshiradi va birinchi mos kelgan blokni ishga tushiradi.

NEXT UP

Logical Operators