Shartli operatorlar
Dasturlashda if operatori ma'lum bir shart bajarilganda (ya'ni shart true bo'lganda) kod blokini ishga tushirish uchun ishlatiladi.
Masalan, talabaning olgan balliga qarab unga baho berish:
Go tilida shartli operatorlarning quyidagi shakllari mavjud:
if operatoriif...else operatoriif...else if...else narvoni (ladder)if operatorlariif operatorining sintaksisi:
if shart {
// shart true bo'lganda bajariladigan kod
}
Agar shart:
true bo'lsa — jingalak qavs { } ichidagi kod bajariladi.false bo'lsa — jingalak qavs { } ichidagi kod tashlab ketiladi.
// Son musbat ekanligini tekshirish
package main
import "fmt"
func main() {
number := 15
// Agar son 0 dan katta bo'lsa
if number > 0 {
fmt.Printf("%d - musbat son\n", number)
}
fmt.Println("Dastur davom etmoqda...")
}
Natija:
15 - musbat son
Dastur davom etmoqda...
Bu yerda number > 0 sharti true bo'lgani uchun if bloki ichidagi xabar ekranga chiqdi. Agar number := -5 qilinsa, shart false bo'ladi va if bloki tashlab o'tilib, faqat "Dastur davom etmoqda..." satri chiqadi.
if operatori ixtiyoriy else bloki bilan birga ishlatilishi mumkin:
if shart {
// shart true bo'lganda bajariladi
} else {
// shart false bo'lganda bajariladi
}
Agar shart:
true bo'lsa — if bloki bajariladi, else bloki tashlab ketiladi.false bo'lsa — if bloki tashlab ketiladi, else bloki bajariladi.
package main
import "fmt"
func main() {
number := -5
if number > 0 {
fmt.Printf("%d - musbat son\n", number)
} else {
fmt.Printf("%d - manfiy son yoki nol\n", number)
}
}
Natija:
-5 - manfiy son yoki nol
[!WARNING] Go tilida
elsekalit so'zi har doimifblokining yopiluvchi jingalak qavsi bilan bir qatorda turishi shart:example.go} else { // To'g'riAgar
elseni yangi qatordan yozsangiz:example.go} else { // XATO! Kompilyatsiya xatosi beradiChunki Go kompilyatori har bir qator oxiriga avtomatik nuqta-vergul (
;) qo'yadi va}dan keyin yangi qator kelsa, buyruq tugadi deb hisoblaydi.
Agar ikkitadan ortiq shartlarni ketma-ket tekshirish talab etilsa, else if operatoridan foydalanamiz:
if shart1 {
// 1-kod bloki
} else if shart2 {
// 2-kod bloki
} else {
// Yuqoridagi barcha shartlar false bo'lsa bajariladi
}

package main
import "fmt"
func main() {
number1 := 12
number2 := 20
if number1 == number2 {
fmt.Printf("Natija: %d == %d\n", number1, number2)
} else if number1 > number2 {
fmt.Printf("Natija: %d > %d\n", number1, number2)
} else {
fmt.Printf("Natija: %d < %d\n", number1, number2)
}
}
Natija:
Natija: 12 < 20
Bu yerda:
12 == 20 → false12 > 20 → falseelse bloki bajarilib, 12 < 20 chiqadi.if bloki ichida yana bir if operatorini joylashtirish mumkin. Bu ichma-ich (nested) if deb ataladi:
package main
import "fmt"
func main() {
number1 := 12
number2 := 20
// Tashqi if
if number1 >= number2 {
// Ichki if...else
if number1 == number2 {
fmt.Printf("Natija: %d == %d\n", number1, number2)
} else {
fmt.Printf("Natija: %d > %d\n", number1, number2)
}
} else {
fmt.Printf("Natija: %d < %d\n", number1, number2)
}
}
Natija:
Natija: 12 < 20
[!TIP] Ichma-ich
ifshartlari juda ko'payib ketsa, kodni o'qish qiyinlashadi. Bunday holatlarda Go tiliningswitchoperatoridan yoki mantiqiy&&operatorlaridan foydalanish kodni ancha toza va tushunarli qiladi.