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 / else — shart rost (
true) yoki yolg’on (false) ekaniga qarab kod blokini tanlab bajaruvchi boshqaruv tuzilmasi. Go’da shart natijasi albattaboolbo’lishi shart —0yoki 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.