10 / 68

if...else

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:

  • agar ball 90 dan yuqori bo'lsa → "A" baho
  • agar ball 75 dan yuqori bo'lsa → "B" baho
  • agar ball 60 dan yuqori bo'lsa → "C" baho

Go tilida shartli operatorlarning quyidagi shakllari mavjud:

  1. if operatori
  2. if...else operatori
  3. if...else if...else narvoni (ladder)
  4. Ichma-ich (nested) if operatorlari

1. Go if operatori

if operatorining sintaksisi:

example.go
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.

Goda if operatorining ishlash sxemasi

Misol: Oddiy if operatori

example.go
// 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:

kod
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.


2. Go if...else operatori

if operatori ixtiyoriy else bloki bilan birga ishlatilishi mumkin:

example.go
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.

Goda if...else operatorining ishlash sxemasi

Misol: if...else operatori

example.go
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:

kod
-5 - manfiy son yoki nol

[!WARNING] Go tilida else kalit so'zi har doim if blokining yopiluvchi jingalak qavsi bilan bir qatorda turishi shart:

example.go
} else { // To'g'ri

Agar else ni yangi qatordan yozsangiz:

example.go
}
else { // XATO! Kompilyatsiya xatosi beradi

Chunki Go kompilyatori har bir qator oxiriga avtomatik nuqta-vergul (;) qo'yadi va } dan keyin yangi qator kelsa, buyruq tugadi deb hisoblaydi.


3. Go if...else if...else narvoni

Agar ikkitadan ortiq shartlarni ketma-ket tekshirish talab etilsa, else if operatoridan foydalanamiz:

example.go
if shart1 {
    // 1-kod bloki
} else if shart2 {
    // 2-kod bloki
} else {
    // Yuqoridagi barcha shartlar false bo'lsa bajariladi
}

Goda if...else if narvonining ishlash sxemasi

Misol: Ikki sonni taqqoslash

example.go
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:

kod
Natija: 12 < 20

Bu yerda:

  1. 12 == 20 → false
  2. 12 > 20 → false
  3. Shuning uchun oxirgi else bloki bajarilib, 12 < 20 chiqadi.

4. Ichma-ich (Nested) if operatori

if bloki ichida yana bir if operatorini joylashtirish mumkin. Bu ichma-ich (nested) if deb ataladi:

example.go
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:

kod
Natija: 12 < 20

[!TIP] Ichma-ich if shartlari juda ko'payib ketsa, kodni o'qish qiyinlashadi. Bunday holatlarda Go tilining switch operatoridan yoki mantiqiy && operatorlaridan foydalanish kodni ancha toza va tushunarli qiladi.