Goda operatorlar
Operator — qiymatlar ustida amal bajaradigan belgi yoki belgilar birikmasi. Masalan, + ikki sonni qo'shadi, ==
qiymatlarni taqqoslaydi, && esa mantiqiy shartlarni birlashtiradi.
Operator ishlaydigan qiymat operand deyiladi. a + b ifodasida + — operator, a va b esa operandlar.
Arifmetik operatorlar
| Operator | Amal | Misol | Natija |
|---|---|---|---|
+ |
qo'shish | 10 + 3 |
13 |
- |
ayirish | 10 - 3 |
7 |
* |
ko'paytirish | 10 * 3 |
30 |
/ |
bo'lish | 10 / 3 |
3 |
% |
qoldiqli bo'lish | 10 % 3 |
1 |
| main.go | |
|---|---|
Natija:
Butun va kasrli sonlarni bo'lish
Ikkala operand ham butun son bo'lsa, natija ham butun son bo'ladi. Kasr qismi tashlab yuboriladi:
Natija kasrli bo'lishi uchun operandlar kasr turida bo'lishi kerak:
| main.go | |
|---|---|
Natija:
float64(jami) va float64(odamlar) butun sonlarni kasr(haqiqiy son) turiga o'tkazadi.
Warning
Sonni nolga bo'lish mumkin emas. Butun sonni 0ga bo'lish dastur bajarilayotgan paytda xatoga olib keladi.
Qoldiqli bo'lish
% operatori butun sonni bo'lgandan keyingi qoldiqni oladi. Masalan, 17 % 5 natijasi 2.
% Goda faqat butun sonlar bilan ishlaydi.
Birga oshirish(increment) va kamaytirish(decrement)
++ qiymatni birga oshiradi, -- esa birga kamaytiradi:
| main.go | |
|---|---|
Natija:
Goda hisob++ va hisob-- alohida buyruq. Ularni boshqa ifodaning ichida ishlatib bo'lmaydi:
Tayinlash operatorlari
= o'ng tomondagi qiymatni chap tomondagi mavjud o'zgaruvchiga beradi:
Arifmetik amal va tayinlash operatorining qisqa ko'rinishi:
| Qisqa yozuv | To'liq yozuv |
|---|---|
son += 5 |
son = son + 5 |
son -= 5 |
son = son - 5 |
son *= 5 |
son = son * 5 |
son /= 5 |
son = son / 5 |
son %= 5 |
son = son % 5 |
| main.go | |
|---|---|
:= yangi o'zgaruvchi e'lon qiladi va usha o'zgaruvchiga qiymatni tayinlaydi, = esa mavjud o'zgaruvchining qiymatini o'zgartiradi.
Taqqoslash operatorlari
Taqqoslash natijasi har doim bool, ya'ni true yoki false bo'ladi.
| Operator | Ma'nosi | Misol | Natija |
|---|---|---|---|
== |
teng | 10 == 10 |
true |
!= |
teng emas | 10 != 3 |
true |
> |
katta | 10 > 3 |
true |
< |
kichik | 10 < 3 |
false |
>= |
katta yoki teng | 10 >= 10 |
true |
<= |
kichik yoki teng | 3 <= 10 |
true |
| main.go | |
|---|---|
Natija:
Info
= qiymat tayinlaydi, == esa tenglikni tekshiradi.
Mantiqiy operatorlar
Mantiqiy operatorlar bool qiymatlarni birlashtiradi yoki teskarisiga o'zgartiradi:
| Operator | Nomi | Qachon true bo'ladi? |
|---|---|---|
&& |
VA | ikkala shart ham true bo'lsa |
| || | YOKI | shartlardan kamida biri true bo'lsa |
! |
EMAS | operand false bo'lsa |
Info
Mantiqiy bool qiymatlarda faqat == va != ishlatiladi.
| main.go | |
|---|---|
Natija:
Natija true, chunki yosh yetarli, chipta bor va foydalanuvchi taqiqlanmagan.
Mantiqiy jadval:
a |
b |
a && b |
a \|\| b |
|---|---|---|---|
false |
false |
false |
false |
false |
true |
false |
true |
true |
false |
false |
true |
true |
true |
true |
true |
!true natijasi false, !false natijasi esa true bo'ladi.
Qisqa tutashuv
&& va || natija ma'lum bo'lgach, ifodaning qolgan qismini tekshirmaydi. Bu qisqa tutashuv (short-circuit evaluation)
deyiladi:
Birinchi shart false bo'lgani sababli 10/boluvchi bajarilmaydi va nolga bo'lish hisoblanmaydi.
Bit operatorlari
Bit operatorlari butun sonlarning ikkilik ko'rinishi ustida ishlaydi. Ular ruxsatlar to'plami, protokollar va past darajali hisob-kitoblarda qo'llaniladi.
| Operator | Amal |
|---|---|
& |
bit bo'yicha VA |
| | | bit bo'yicha YOKI |
^ |
bit bo'yicha XOR yoki bitlarni inkor qilish |
&^ |
bitni tozalash (AND NOT) |
<< |
chapga surish |
>> |
o'ngga surish |
| main.go | |
|---|---|
Natija:
Hozir bu operatorlarning vazifasini bilib olish yetarli. Ular kerak bo'ladigan mavzularda batafsil ko'rib chiqiladi.
Operatorlar ustuvorligi
Bitta ifodada bir nechta operator bo'lsa, ayrim amallar boshqalaridan oldin bajariladi:
Ustuvorlikning soddalashtirilgan tartibi yuqoridan pastga:
*,/,%,<<,>>,&,&^;+,-,|,^;==,!=,<,<=,>,>=;&&;||.
Ifoda murakkab ko'rinsa, maqsadni aniq ko'rsatish uchun qavs ishlatish to'g'ri bo'ladi.
Keyingi qismda qiymatlarni kodning ichida yozish o'rniga ularni konsoldan kiritishni o'rganamiz.
Misollar
1. Juft yoki toq sonni aniqlash
% bo‘lishdan qolgan qoldiqni beradi. Natija false, chunki 17ni 2ga bo‘lganda qoldiq 1.
2. Qiymatni oraliqda tekshirish
package main
import "fmt"
func main() {
yosh := 24
mehnatYoshi := yosh >= 18 && yosh <= 60
fmt.Println(mehnatYoshi)
}
&& tufayli ikkala chegara ham bajarilgandagina natija true bo‘ladi.
3. Qiymatni ketma-ket yangilash
+= qo‘shib saqlaydi, *= ko‘paytirib saqlaydi, -- esa bittaga kamaytiradi. Natija 29 bo‘ladi.
4. Qisqa tutashuv
package main
import "fmt"
func main() {
boluvchi := 0
xavfsiz := boluvchi != 0 && 10/boluvchi > 1
fmt.Println(xavfsiz)
}
Birinchi shart false bo‘lgani uchun ikkinchisi hisoblanmaydi. Shu sababli nolga bo‘lish xatosi yuz bermaydi.
5. Qoldiq bilan vaqtni ajratish
package main
import "fmt"
func main() {
jamiSekund := 3672
soat := jamiSekund / 3600
daqiqa := jamiSekund % 3600 / 60
sekund := jamiSekund % 60
fmt.Println(soat, daqiqa, sekund)
}
Natija 1 1 12. / to‘liq birliklarni, % esa keyingi hisob uchun qolgan qismini ajratadi.
6. Bit yordamida bayroqni yoqish
package main
import "fmt"
func main() {
const yozish = 1 << 1
ruxsat := 1
ruxsat |= yozish
fmt.Printf("%03b\n", ruxsat)
}
|= kerakli bitni yoqib, boshqa bitlarni o‘zgartirmaydi. Natija 011.
7. Bit yordamida bayroqni tekshirish
package main
import "fmt"
func main() {
const yozish = 1 << 1
ruxsat := 0b011
fmt.Println(ruxsat&yozish != 0)
}
& faqat ikkala qiymatda ham yoqilgan bitlarni qoldiradi.
8. Bitni o‘chirish
package main
import "fmt"
func main() {
const yozish = 1 << 1
ruxsat := 0b111
ruxsat &^= yozish
fmt.Printf("%03b\n", ruxsat)
}
&^ operatori o‘ng tomonda ko‘rsatilgan bitlarni chap qiymatdan tozalaydi. Natija 101.
9. Eksklyuziv OR bilan qiymatlarni almashtirish
Natija 9 5. Bu ^ operatorining imkoniyatini ko‘rsatadi, ammo amaliy Go kodida tushunarliroq a, b = b, a usuli afzal.
10. Ustuvorlikni qavs bilan aniqlashtirish
package main
import "fmt"
func main() {
chegirma := 100_000 - (100_000*15)/100
fmt.Println(chegirma)
}
Qavs hisoblash maqsadini ko‘rsatadi. _ katta sonni o‘qishni osonlashtiradi va qiymatga ta’sir qilmaydi.