Go / Операторууд

Операторууд

Оператор гэдэг нь утгуудад үйлдэл хийдэг тэмдэгт юм. Математикийн нэмэх, хасах, харьцуулах, логик нийлүүлэх зэрэг бүхий л үйлдлийг операторуудаар илэрхийлнэ. Go-ийн операторуудыг мэдснээр тооцоолол хийж, нөхцөл шалгаж, программыг удирдах чадвар эзэмшинэ.

Арифметик операторууд

Тооцоолол хийх үндсэн операторууд:

go
package main

import "fmt"

func main() {
    a := 17
    b := 5

    fmt.Println(a + b)   // 22 — нэмэх
    fmt.Println(a - b)   // 12 — хасах
    fmt.Println(a * b)   // 85 — үржүүлэх
    fmt.Println(a / b)   // 3  — хуваах (бүхэл тоонд үлдэгдэл хасагдана)
    fmt.Println(a % b)   // 2  — үлдэгдэл (modulo)
}

Гаралт:

код
22
12
85
3
2

/ операторт анхаарах хэрэгтэй: хоёул бүхэл тоо бол үр дүн нь бүхэл тоо болно — 17 / 5 = 3, 3.4 биш. Float хуваалт хийхийн тулд хамгийн ядаж нэг нь float64 байх ёстой:

go
package main

import "fmt"

func main() {
    a := 17.0
    b := 5.0
    fmt.Println(a / b)  // 3.4

    // Эсвэл хөрвүүлж хуваах
    x, y := 17, 5
    fmt.Println(float64(x) / float64(y))  // 3.4
}

Харьцуулалтын операторууд

Хоёр утгыг харьцуулж bool үр дүн (true/false) өгнө:

go
package main

import "fmt"

func main() {
    x := 10
    y := 20

    fmt.Println(x == y)   // false — тэнцүү эсэх
    fmt.Println(x != y)   // true  — тэнцүү биш эсэх
    fmt.Println(x < y)    // true  — бага эсэх
    fmt.Println(x > y)    // false — их эсэх
    fmt.Println(x <= y)   // true  — бага тэнцүү эсэх
    fmt.Println(x >= y)   // false — их тэнцүү эсэх
}

Гаралт:

код
false
true
true
false
true
false

Харьцуулалтын операторууд нь if нөхцөл, for давталт зэрэгт маш их хэрэглэгддэг.

Логик операторууд

bool утгуудыг нийлүүлэх операторууд:

go
package main

import "fmt"

func main() {
    isStudent := true
    hasID     := false
    age       := 20

    // && — "ба" (AND): хоёул true байх ёстой
    fmt.Println(isStudent && hasID)     // false
    fmt.Println(isStudent && age > 18)  // true

    // || — "эсвэл" (OR): аль нэг нь true байхад хангалттай
    fmt.Println(isStudent || hasID)     // true
    fmt.Println(false || false)         // false

    // ! — "үгүйсгэл" (NOT): true → false, false → true
    fmt.Println(!isStudent)  // false
    fmt.Println(!hasID)      // true
}

Гаралт:

код
false
true
true
false
false
true

Оноох операторууд

Хувьсагчийн утгыг өөрчлөх товчилсон бичиглэлүүд:

go
package main

import "fmt"

func main() {
    score := 50

    score += 10   // score = score + 10  →  60
    fmt.Println(score)

    score -= 5    // score = score - 5   →  55
    fmt.Println(score)

    score *= 2    // score = score * 2   →  110
    fmt.Println(score)

    score /= 11   // score = score / 11  →  10
    fmt.Println(score)

    score %= 3    // score = score % 3   →  1
    fmt.Println(score)
}

Гаралт:

код
60
55
110
10
1

Нэмэгдэх ба хасагдах операторууд

Go-д ++ (нэмэгдэх) ба -- (хасагдах) операторууд байдаг:

go
package main

import "fmt"

func main() {
    count := 0

    count++  // count = count + 1
    fmt.Println(count)  // 1

    count++
    fmt.Println(count)  // 2

    count--  // count = count - 1
    fmt.Println(count)  // 1
}

Go-д ++ ба -- нь зөвхөн statement (тусдаа мөр) хэлбэрт ажилладаг — x = count++ гэх мэт expression дотор ашиглах боломжгүй. Энэ нь C, JavaScript зэрэг хэлнүүдийн нийтлэг алдааны эх үүсвэрийг арилгасан зөв шийдэл.

Битийн операторууд

Тоонуудыг бит хэмжээнд шууд боловсруулах операторууд:

go
package main

import "fmt"

func main() {
    a := 0b1010  // 10 (binary)
    b := 0b1100  // 12 (binary)

    fmt.Printf("%04b = %d\n", a&b, a&b)   // AND:  0b1000 = 8
    fmt.Printf("%04b = %d\n", a|b, a|b)   // OR:   0b1110 = 14
    fmt.Printf("%04b = %d\n", a^b, a^b)   // XOR:  0b0110 = 6
    fmt.Printf("%04b = %d\n", a<<1, a<<1) // LEFT SHIFT:  0b10100 = 20
    fmt.Printf("%04b = %d\n", a>>1, a>>1) // RIGHT SHIFT: 0b0101  = 5
}

Битийн операторуудыг системийн програмчлал, сүлжээний протокол, тэмдэглэгээ (flag) зохицуулахад ашиглана. Эхлэгчдэд энэ хэсгийг дараа нь буцаж үзэх нь хангалттай.

Дараагийн хичээлд:

if, else if, else ашиглан нөхцөл шалгаж, программынхаа гүйцэтгэлийн чиглэлийг удирдаж сурна. Нөхцөл бол бүх програмчлалын хэлний хамгийн чухал ойлголтуудын нэг.