if/else нөхцөл
Программ бол зөвхөн дараалан ажилладаг биш — нөхцөлөөс хамаарч өөр өөр замаар явдаг. "Хэрэв оноо 90-ээс дээш бол A үнэлгээ өг, үгүй бол B өг" гэх мэт шийдвэр гаргахад if/else хэрэглэнэ. Энэ бол програмчлалын хамгийн суурь ойлголтуудын нэг.
if — энгийн нөхцөл
package main
import "fmt"
func main() {
score := 85
if score >= 90 {
fmt.Println("Маш сайн!")
}
fmt.Println("Програм дуусав.")
}
Гаралт:
Програм дуусав.
score нь 85 тул score >= 90 нь false — блок дотрых код ажиллахгүй. Хэрэв score := 95 байсан бол "Маш сайн!" хэвлэгдэх байлаа.
Go-д нөхцөлийг хаалтад ( ) оруулах шаардлагагүй — энэ нь C, Java зэрэг хэлнүүдээс ялгарах онцлог. Гэхдээ блокийн хаалт { } заавал байх ёстой.
if / else
package main
import "fmt"
func main() {
temperature := 22
if temperature >= 20 {
fmt.Println("Дулаан байна. Гадаа гарахад тохиромжтой.")
} else {
fmt.Println("Хүйтэн байна. Хүрэм өмс.")
}
}
Гаралт:
Дулаан байна. Гадаа гарахад тохиромжтой.
if нөхцөл true бол дээрх блок, false бол else блок ажиллана. Хоёрын аль нэг заавал ажиллана.
else if — олон нөхцөл
package main
import "fmt"
func main() {
score := 73
if score >= 90 {
fmt.Println("А үнэлгээ — Маш сайн")
} else if score >= 80 {
fmt.Println("B үнэлгээ — Сайн")
} else if score >= 70 {
fmt.Println("C үнэлгээ — Дунд")
} else if score >= 60 {
fmt.Println("D үнэлгээ — Хангалттай")
} else {
fmt.Println("F үнэлгээ — Тэнцсэнгүй")
}
}
Гаралт:
C үнэлгээ — Дунд
Go нөхцлүүдийг дараалан шалгана. Анхных нь true болмогц тэр блокийг ажиллуулж, үлдсэнийг алгасна. score нь 73 тул эхний хоёр нөхцөл false, гурав дахь нь true.
Богино хувьсагч зарлал if дотор
Go-д if мөрт хувьсагч зарлаж болно. Тухайн хувьсагч зөвхөн if/else блок дотор хүчинтэй байна:
package main
import "fmt"
func main() {
// x зөвхөн if/else дотор хүчинтэй
if x := 42; x > 40 {
fmt.Println("x их байна:", x)
} else {
fmt.Println("x бага байна:", x)
}
// fmt.Println(x) // АЛДАА! x энд хүчингүй
}
Гаралт:
x их байна: 42
Энэ хэв маяг нь function-с утга авч, шууд шалгах үед ихэвчлэн хэрэглэгддэг. Алдааг шалгах (error handling) хэсэгт байнга харна.
Логик операторуудтай хослуулах
package main
import "fmt"
func main() {
age := 20
hasID := true
isMember := false
// && — хоёул биелэх ёстой
if age >= 18 && hasID {
fmt.Println("Орж болно.")
}
// || — аль нэг биелэхэд хангалттай
if age >= 18 || isMember {
fmt.Println("Хөнгөлөлт эдлэх эрхтэй.")
}
// ! — үгүйсгэл
if !isMember {
fmt.Println("Гишүүнчлэл авбал 20% хөнгөлөлт авна.")
}
}
Гаралт:
Орж болно.
Хөнгөлөлт эдлэх эрхтэй.
Гишүүнчлэл авбал 20% хөнгөлөлт авна.
Nested if — дотор нөхцөл
if блок дотор дахин if бичиж болно:
package main
import "fmt"
func main() {
username := "admin"
password := "1234"
if username == "admin" {
if password == "1234" {
fmt.Println("Нэвтэрлээ!")
} else {
fmt.Println("Нууц үг буруу.")
}
} else {
fmt.Println("Хэрэглэгч олдсонгүй.")
}
}
Гаралт:
Нэвтэрлээ!
Nested if-г хэт гүн болгохоос зайлсхий — ихэвчлэн 2–3 түвшингээс хэтрэхгүй байх нь кодыг уншихад хялбар болгодог.
Дараагийн хичээлд:
Олон утгатай харьцуулалт хийхэд if/else if гинжний оронд switch ашиглах нь кодыг хамаагүй цэвэр, уншихад хялбар болгодог. Go-ийн switch нь бусад хэлнүүдийнхээс хэд хэдэн ашигтай ялгаатай.