O'zgaruvchilar, butun va haqiqiy sonlar
O'zgaruvchilar
O'zgaruvchi - xotiraning nomlangan qismi bo'lib, o'zida ma'lum bir toifadagi qiymatlarni saqlaydi. O'zgaruvchining nomi va qiymati bo'ladi. O'zgaruvchining nomi orqali qiymat saqlanayotgan xotira qismiga murojaat qilinadi. dastur ishlashi jarayonida o'zgaruvchining qiymatini o'zgartirish mumkin. Har qanday o'zgaruvchini ishlatishdan oldin, uni e'lon qilish lozim. Quyida butun sonlardan foydalanish uchun b, haqiqiy sonlardan foydalanish uchun h o'zgaruvchilarini e'lon qilish keltirilgan.
O'zgaruvchini e'lon qilish
- b int;
- h float;
Butun sonlarni ifodalash uchun int va haqiqiy sonlarni ifodalash uchun float xizmatchi so'zlaridan foydalanilad *
O'zgarmaslar (const)
Hisoblash jarayonida qiymatini o'zgartirmaydigan kattaliklarga aytiladi.
- float const pi = 3.14;
Goda asosiy ma'lumot turlari
1. Raqamli turlar(numeric types):
Signed Integers(musbat va manfiy butun sonlar)
int8
- 8-bit signed integerKompyuter xotirasida egallagan hajmi:
8 bitsQabul qiladigan qiymatlar oralig'i:
-128 to 127
int16
- 16-bit signed integerKompyuter xotirasida egallagan hajmi:
16 bitsQabul qiladigan qiymatlar oralig'i:
-32,768 to 32,767
int32
- 32-bit signed integerKompyuter xotirasida egallagan hajmi:
32 bitsQabul qiladigan qiymatlar oralig'i:
-2,147,483,648 to 2,147,483,647
int64
- 64-bit signed integerKompyuter xotirasida egallagan hajmi:
64 bitsQabul qiladigan qiymatlar oralig'i:
-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
Kompyuterga bog'liq turlar
uint
- Unsigned integers (kompyuterga bog'liq turlar)int
- Signed integers (kompyuterga bog'liq turlar)uintptr
- Pointer(ko'rsatkich)
Unsigned Integers(musbat butun sonlar)
uint8
- 8-bit unsigned integerKompyuter xotirasida egallagan hajmi:
8 bitsQabul qiladigan qiymatlar oralig'i:
0 to 255
uint16
- 16-bit unsigned integerKompyuter xotirasida egallagan hajmi:
16 bitsQabul qiladigan qiymatlar oralig'i:
0 to 65,535
uint32
- 32-bit unsigned integerKompyuter xotirasida egallagan hajmi:
32 bitsQabul qiladigan qiymatlar oralig'i:
0 to 4,294,967,295
uint64
- 64-bit unsigned integerKompyuter xotirasida egallagan hajmi:
64 bitsQabul qiladigan qiymatlar oralig'i:
0 to 18,446,744,073,709,551,615
Floating Point Numbers
float32
- 32-bit floating-point numberKompyuter xotirasida egallagan hajmi:
32 bits
float64
- 64-bit floating-point numberKompyuter xotirasida egallagan hajmi:
64 bits
Complex
complex64
- Complex number with float32 real and imaginary parts- Kompyuter xotirasida egallagan hajmi: 64 bits (32 bits for real, 32 bits for imaginary)
complex128
- Complex number with float64 real and imaginary parts- Kompyuter xotirasida egallagan hajmi: 128 bits (64 bits for real, 64 bits for imaginary)
2. Mantiqy tur:
bool
- Mantiqiy qiymatlar (true(rost) yoki false(yolg'on))
3. Matnli tur:
string
- Belgilar ketma-ketligi
4. Derived turlar:
array
- aniq o'lchamga ega massivslice
- Dinamik o'lchamli, massiv elementlariga moslashuvchan.map
- Kalit-qiymat to'plamistruct
- Nomlangan madonlar turipointer
- O'zgaruvchining xotiradagi manzili
5. Maxsus turlar:
chan
- Gorutinlar orasidagi aloqa uchun kanal turifunc
- Funktsiya turiinterface
- Usullar to'plamini ifodalovchi mavhum tipnil
- Qiymat yoki ko'rsatgich yo'qligini ifodalaydi
6. Boshqa turlar:
byte
- Alias foruint8
- Kompyuter xotirasida egallagan hajmi: 8 bits
- Qabul qiladigan qiymatlar oralig'i: 0 to 255
rune
- Alias forint32
; represents a Unicode code point- Kompyuter xotirasida egallagan hajmi: 32 bits
- Qabul qiladigan qiymatlar oralig'i: -2,147,483,648 to 2,147,483,647
Jadval ko'rinishida
Ma'lumot turi | Ta'rif | E'lon qilinshiga misol |
---|---|---|
int |
Signed integer | var x int |
int8 |
8-bit signed integer | var x int8 |
int16 |
16-bit signed integer | var x int16 |
int32 |
32-bit signed integer | var x int32 |
int64 |
64-bit signed integer | var x int64 |
uint |
Unsigned integer | var x uint |
uint8 |
8-bit unsigned integer | var x uint8 |
uint16 |
16-bit unsigned integer | var x uint16 |
uint32 |
32-bit unsigned integer | var x uint32 |
uint64 |
64-bit unsigned integer | var x uint64 |
float32 |
32-bit floating-point number (float) | var x float32 |
float64 |
64-bit floating-point number (double) | var x float64 |
bool |
Boolean (true/false) | var x bool |
string |
String | var x string |
byte |
Alias for uint8 |
var x byte |
rune |
Represents a Unicode code point | var x rune |
complex64 |
Complex number with float32 real/imag | var x complex64 |
complex128 |
Complex number with float64 real/imag | var x complex128 |
32 bit va 64 bit bular nima degani?
"32-bit" va "64-bit" atamalari kompyuter protsessorining (CPU) axborotni qayta ishlash usulini anglatadi. Ushbu atamalar odatda kompyuter arxitekturasi va dasturiy ta'minotning muvofiqligi kontekstida qo'llaniladi.
Har birining qisqacha izohi:
-
32 bit
- 32 bitli tizimda protsessor bir vaqtning o'zida 32 bitli ma'lumotlarni qayta ishlay oladi.
- 32-bitli tizimdagi xotira manzillari 32 bit uzunlikda boʻlib, protsessorga toʻgʻridan-toʻgʻri 4 gigabayt (2^32 bayt) operativ xotiraga murojaat qilish imkonini beradi.
- Eski kompyuterlar va operatsion tizimlar asosan 32 bitli edi.
-
64 bit
- 64 bitli tizimda protsessor bir vaqtning o'zida 64 bit ma'lumotlarni qayta ishlaydi.
- 64 bitli tizimdagi xotira manzillari 64 bit uzunlikda bo'lib, manzilli xotira maydonini ancha kattaroq qilish imkonini beradi. Nazariy jihatdan, 64-bitli tizim 18,4 million terabayt operativ xotiraga (2^64 bayt) murojaat qilishi mumkin.
- Zamonaviy kompyuterlar va operatsion tizimlar ish faoliyatini yaxshilash va katta hajmdagi operativ xotirani boshqarish qobiliyati uchun 64-bitli arxitekturadan tobora ko'proq foydalanmoqda.
32-bitli hisoblashdan 64-bitli kompyuterga oʻtishga koʻproq ishlov berish quvvati va katta hajmdagi xotiradan foydalanishga bo'lgan ehtiyoj sabab bo'ladi chunki video tahrirlash, oʻyin oʻynash va katta hisoblash resurslarini talab qiluvchi ilmiy simulyatsiyalar kabi ilovalar ko'proq resurs talab qiladi.
Identifikator
Dasturchi tomonidan dastur elementlari (funksiya, o'zgaruvchilar, o'zgarmaslar …) uchun ixtiyoriy tanlangan nom.
Identifikator tanlaganda quyidagilarga ahamiyat berish kerak:
- Identifikator lotin harflaridan boshlanishi shart;
- Ikkinchi simvoldan boshlab raqamlardan foydalanish mumkin;
- Go da katta kichik harflar farq qiladi. Ya'ni quyidagilarning har biri alohida identifikator hisoblanadi:
KATTA, katta, KaTTa, kAttA, Katta, KattA, ...
- identifikatorda probeldan foydalanib bo'lmaydi;
- Go da zahiraga olingan kalit so'zlaridan identifikator sifatida foydalanib bo'lmaydi.
Golangda zahiraga olingan Kalit so'zlari
Kalit so'zlar | Kalit so'zlar | Kalit so'zlar | Kalit so'zlar |
---|---|---|---|
break | default | func | interface |
select | case | defer | go |
map | struct | chan | else |
goto | package | switch | const |
fallthrough | if | range | type |
continue | for | import | return |
var |
Amaliyot
Go (Golang) da int ma'lumotlar turi imzolangan butun sonni ifodalaydi va uning o'lchami asosiy tizim arxitekturasiga bog'liq. Bu 32 bit yoki 64 bit bo'lishi mumkin.
Bundan tashqari, Go int8, int16, int32 va int64 kabi aniq o'lchamdagi butun son turlarini taqdim etadi. Ushbu turlar butun sonni ifodalash uchun ishlatiladigan bitlar sonini aniq ko'rsatadi, ya'ni ular musbat va manfiy qiymatlarni ifodalashi mumkin.
Quyida Goda o'zgaruvchilarni e'lon qilishga misol keltirilgan:
Ushbu turlar bilan ishlashda siz qabul qilish oralig'idan oshib ketishi mumkin bo'lgan muammolarni yodda tutishingiz kerak. Agar siz butun son turi oralig'idan oshib ketsangiz, kutilmagan xatolarga duch kelishingiz mumkin. Go har xil o'lchamdagi butun sonlar turlarini avtomatik ravishda aylantirmaydi, shuning uchun kerak bo'lganda aniq konvertatsiya talab qilinadi. Masalan:
Info
Ma'lumot turini tanlashda har doim ma'lumot hajmi va diapazoniga bo'lgan talabni hisobga olish zarur.
Go dasturlash tilini boshqa dasturlash tiliaridan ajratib turadigan yana bir xususiyatlaridan biri, uning e'lon qilingan ammo foydalanilmayotgan o'zgaruvchilarni aniqlab kompilyatsiyadan o'tqazmasligi. Misol uchun:
yuz.go | |
---|---|
Yuqoridagi dasturni ishga tushirgan vaqtizmida quyidagicha xatolik xabarini olamiz.
Printf chop qilish funksiyasi
Goda fmt
paketidan formatlangan chop etish uchun Printf
funksiyasini taqdim etadi.
Printf
funksiyasi standart chiqish (odatda konsolga) qiymatlarni formatlash va chop etish
imkonini beradi. U C tilining printf
funksiyasiga o'xshaydi. Misol:
%s
- Satrlar uchun(string).%d
- Butun sonlar uchun(int).%f
- Haqiqiy sonlar uchun(float).%t
- Mantiqiy qiymatlar uchun(bool).%T
- Turni aniqlash uchun(type).\n
- Yangi qatorga o'tish(new line).
O'zgaruvchilarni turini aniqlash
E'lon qilgan o'zgaruvchini turini aniqlash uchun Printf
chop etish funksiyasidan foydalanamiz.
Natija:
Turlarni kompyuter xotirasida egallagam xajmini aniqlash
Turlarni kompyuter xotirasida egallagam xajmini aniqlashimiz uchun unsafe
paketini import
qilishimiz va unsafe
paketining Sizeof
funksiyasi yordamida aniqlashimiz mumkin.
Natija:
O'zgaruvchilarni e'lon qilishni boshqa usullari
Yuqoridagi misollarimizda o'zgaruvchilarni turi bilan yozdik, Go o'zgaruvchini turisiz e'lon qilish imkonini beradi. Misol uchun:
Natija:
Yuqoridagi misolda hech hech qanday tur nomini yozmadik, o'zgaruvchini turini Goni o'zi qiymatga qarab aniqladi.
Agar qiymat haqiqiy son bo'lsa float32
deb qabul qildi, butun sonni esa int
.
Go da o'zgaruvchilarni e'lon qilishni yana bir usuli bu quyidagicha, bu usuldaham o'zgaruvchi turi va var
kalit so'zi yozilmaydi. O'zgaruvchi qiymatiga asosan Goning o'zi aniqlaydi.
Bu usuldan funksiyalar ichida foydalanish tavfsiya qilinadi.
O'zgarmaslar(const)
Hisoblash jarayonida qiymatini o'zgartirmaydigan kattaliklarga aytiladi.
Misol:
O'zgarmaslar har qanday asosiy ma'lumotlar turlaridan bo'lishi mumkin, masalan,int
, float
, string
.
Info
Malakali dasturchilar o'zgarmaslarni katta harf(uppercase) bilan nomlashni tavfsiya qilishadi.