Darsliklar Go Lang Shart operatori

Go Lang Go Lang Shart operatori

Shart operatori dastur bajarilish yo’nalishini shartga qarab tanlaydi. Go’da if/else boshqa C-oilasidagi tillarga o’xshaydi, lekin ikkita muhim farq bilan: shart atrofida qavs yo’q, figurali qavs esa har doim majburiy.

if / else if / elseshart rost (true) yoki yolg’on (false) ekaniga qarab kod blokini tanlab bajaruvchi boshqaruv tuzilmasi. Go’da shart natijasi albatta bool bo’lishi shart — 0 yoki bo’sh satr shart sifatida ishlamaydi.

Asosiy if…else if…else

Shart qavssiz yoziladi, blok esa qavssiz bo’lishi mumkin emas — hatto bitta qatorli bo’lsa ham:

package main

import "fmt"

func main() {
    baho := 75

    if baho >= 90 {
        fmt.Println("A'lo")
    } else if baho >= 70 {
        fmt.Println("Yaxshi")
    } else if baho >= 50 {
        fmt.Println("Qoniqarli")
    } else {
        fmt.Println("Qoniqarsiz")
    }
}
Yaxshi

Shartlar yuqoridan pastga tekshiriladi, birinchi rost topilgani bajariladi. Go’da else, C++’dagi kabi, oldingi } bilan bir qatorda yozilishi shart — sintaksis darsida ko’rgan avtomatik nuqta-vergul qoidasi buni talab qiladi.

if bilan init-statement

Go’ning o’ziga xos qulayligi: ifdan oldin, nuqta-vergul bilan ajratilgan qisqa boshlang’ich buyruq yozish mumkin — bu, natijani vaqtinchalik o’zgaruvchiga olib, darhol tekshirishda ishlatiladi:

package main

import "fmt"

func kvadrat(n int) int {
    return n * n
}

func main() {
    if natija := kvadrat(5); natija > 20 {
        fmt.Println("Katta:", natija)
    } else {
        fmt.Println("Kichik:", natija)
    }
}
Katta: 25

natija := kvadrat(5) — avval hisoblandi, so’ng ; dan keyingi shart shu natija asosida tekshirildi. Bu naqsh, ayniqsa, funksiya natijasini faqat shu if ichida ishlatish kerak bo’lganda tavsiya etiladi.

init-statement’ning doirasi (scope) cheklangan

ifning boshlang’ich buyrug’ida e’lon qilingan o’zgaruvchi faqat shu if/else zanjiri ichida ko’rinadi:

package main

func main() {
    if x := 5; x > 0 {
    }
    println(x)
}
# command-line-arguments
./main.go:6:10: undefined: x

x faqat ifning o’zi va unga tegishli else bloklarida mavjud — undan tashqarida, println(x) chaqirilganda, Go uni “aniqlanmagan” deb topadi. Bu qat’iy doiralash tasodifiy nom to’qnashuvining oldini oladi.

Faqat bool — boshqa hech narsa

Go’da shart natijasi qat’iy bool bo’lishi shart; 0, bo’sh satr yoki nil shart sifatida ishlatib bo’lmaydi:

package main

func main() {
    son := 0
    if son {
    }
}
# command-line-arguments
./main.go:5:5: non-boolean condition in if statement

Bu — Python yoki Ruby’dan Go’ga o’tgan dasturchilar duch keladigan eng keng tarqalgan farqlardan biri: Go’da if son yozib bo’lmaydi, albatta if son != 0 deb aniq solishtirish kerak.