Go’da 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 |
% |
bo‘lishdan qolgan qoldiq | 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:
Kasrli natija uchun operandlar kasrli turda bo‘lishi kerak:
| main.go | |
|---|---|
Natija Har biriga: 3.33 bo‘ladi. float64(jami) va float64(odamlar) butun sonlarni hisoblash uchun kasrli turga o‘tkazadi.
Warning
Sonni nolga bo‘lish mumkin emas. Butun sonni 0ga bo‘lish dastur bajarilayotgan paytda xatoga olib keladi. Bo‘luvchi o‘zgaruvchidan olinsa, amal bajarilishidan oldin uning nol emasligini tekshiring.
Qoldiqli bo‘lish
% operatori butun sonni bo‘lgandan keyingi qoldiqni qaytaradi. Masalan, 17 % 5 natijasi 2.
Sonning juft yoki toqligini shu operator bilan aniqlash mumkin:
% Go’da faqat butun sonlar bilan ishlaydi.
Birga oshirish va kamaytirish
++ qiymatni birga oshiradi, -- esa birga kamaytiradi:
| main.go | |
|---|---|
Natijada avval 6, keyin 5 chiqadi. Go’da 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 tayinlashni qisqa yozish mumkin:
| 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 | |
|---|---|
Natija Balans: 130 bo‘ladi. := yangi o‘zgaruvchi e’lon qiladi, = esa mavjud o‘zgaruvchining qiymatini almashtiradi.
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 | |
|---|---|
Info
= qiymat beradi, == esa tenglikni tekshiradi. Tashqi ko‘rinishi o‘xshash bo‘lsa ham, ularning vazifasi butunlay boshqa.
Sonlarni barcha taqqoslash operatorlari bilan solishtirish mumkin. Matnlar ham leksikografik tartibda taqqoslanadi. bool qiymatlarda faqat == va != ishlatiladi.
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 |
| main.go | |
|---|---|
Natija true, chunki yosh yetarli, chipta bor va foydalanuvchi taqiqlanmagan.
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.
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 yuz bermaydi.
Bit operatorlari
Bit operatorlari butun sonlarning ikkilik ko‘rinishi ustida ishlaydi. Ular ruxsatlar to‘plami, protokollar va past darajali hisoblarda uchraydi.
| 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 | |
|---|---|
Hozir bu operatorlarning vazifasini tanib 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 ishlating.
Xulosa
Arifmetik operatorlar hisoblaydi, taqqoslash operatorlari bool natija qaytaradi, mantiqiy operatorlar shartlarni birlashtiradi. Tayinlash operatorlari o‘zgaruvchi qiymatini yangilaydi. Butun sonlarni bo‘lishda kasr qismi tashlab yuborilishini va = bilan ==ning farqini esda tuting.
Keyingi darsda qiymatlarni kodning ichida yozish o‘rniga ularni konsoldan kiritishni o‘rganamiz.