Introduction to Go Languge Data Types

March 18, 2019

ဒီ Article မှာ Go Programming Language ရဲ့ Data Types တွေ အကြောင်းရှင်းပြသွားပါ့မယ်။ Go Programming Language မှာ Data Types တွေက အရမ်းကြီး သိပ်မရှုပ်ပါဘူး။

Boolean ( bool )

Boolean Data Type မှာ ထုံးစံအတိုင်း true / false ပါပဲ။ Boolean ကို “bool” နဲ့ ပြပါတယ်။ Boolean Expression က ထွက်လာမဲ့ Data Types တွေကလဲ​ Boolean value တွေပဲ ဖြစ်ပါတယ်။

var data bool = true

String

တခြား Programming Language တွေမှာလို Double Quote ထဲ ထည့်ရေးရင် String Data Type ပါပဲ။ Back Quote / Back Tick ကိုလဲ String ကြေညာတဲ့အခါ အသုံးပြုနိုင်ပါတယ်။​ ထူးခြားတာ တစ်ခုကတော့ Double Quote အသုံးပြုရင် \n တို့ \r တို့ စတဲ့ escape characters တွေ အသုံးပြုလို့ ရပြီး Back Quote နဲ့ ရေးတဲ့ String တွေမှာတော့ Enter ခေါက်လိုက်ရုံနဲ့ နောက်တကြောင်းဆင်းသွားမှာပါ။

Double Quote နဲ့ရေးတဲ့ String တွေကို Normal String

var normal_string = "This is Normal String\nYou can use escape characters"

Back Quote / Back Tick နဲ့ အသုံးပြုတဲ့ String ကိုတော့ Raw String လို့ ခေါ်ပါတယ်

var raw_string = `This is Raw String
You don't have to use escape characters
What You see is what you get`

Integers

Go Language ရဲ့ Integer Type တွေက အတော်စုံပါတယ်။ နဂို Programming Language သိထားတဲ့ အခြေခံရှိရင်တော့ အလွယ်တကူ မှတ်သားနိုင်ပေမဲ့ သေချာ မသိသေးရင်တော့ Type တွေ အများကြီးလို့ ထင်နိုင်ပါတယ်။ သိမ်းနိုင်တဲ့ Data Size အလိုက် လိုက်ကွဲသွားတာပါ။ Binary တွက်တတ်ရင် အဆင်ပြေပါတယ်။

Binary စနစ်မှာ 0 1 ပဲ ရှိပါတယ်။ ၂ ကို အခြေခံတဲ့ နှစ်လီစိတ် စနစ်ပါ။ Binary မှာ 0 ဆိုရင် “0” ပါပဲ။ 1 ဆိုရင် “1”။ “2” ဆို ရင်ကော? Binary System မှာ 0 1 ပဲရှိတဲ့အတွက် ဆက်ပြီးရေတွက်စရာ မရှိတော့ပါဘူး။ Decimal System မှာ သုည နေ ၉ အထိ ရေတွက်ပြီးရင် ဆက်ပြီးရေတွက်စရာ မရှိတော့တဲ့အတွက် ရှေ့ကို တစ်လုံးတိုးပါတယ်။ Binary System မှာ ရှေ့ကို တစ်နေရာတိုးရင် 1 bit လို့ ခေါ်ပါတယ်။ Decimal System တော့ ဆယ်လီစိတ် စနစ်ဖြစ်တဲ့အတွက် ၁၀ ကို ထပ်ကိန်းတင်ပေမဲ့ Binary System တော့ နှစ်လီစိတ်မို့ ၂ ကို ထပ်ကိန်းတင်ပါတယ်။

Binary System မှာ 8 Bit ကို 1 Byte လို့ သတ်မှတ်ပါတယ်။ ဒီတော့ စာလုံး တစ်လုံး မှတ်ဖို့ Computer မှာ Bit 8 ခု လိုပါတယ်။ ဒီတော့ စာလုံးတစ်လုံးကို Computer ထဲမှာ သိမ်းဖို့ 1 Byte လိုတယ်လို့ အဓိပ္ပာယ်ရပါတယ်။။ Bit ကို b အသေးနဲ့ ကိုယ်စားပြုပြီး Byte ကို B အကြီးနဲ့ ကိုယ်စားပြုပါတယ်။

Decimal System မှာ 0 ကနေ 9 အထိ ဆယ်ခု ရှိသလိုပဲ Binary System ရဲ့ 1 Bit မှာ 0 နဲ့ 1 ရယ် စုစုပေါင်း မှတ်နိုင်တာ Pattern 2 ခု ရှိတယ်။ 2 Bits မှာကျတော့ 00, 01, 10, 11 ဆိုပြီး Pattern 4 ခု မှတ်နိုင်သွားပြီ။ 3 Bit မှာဆို 000, 001, 010, 011, 100, 110, 101, 111 စတဲ့ မတူညီတဲ့ Pattern 8 ခု မှတ်နိုင်တယ်။ 8 Bits / 1 Byte ဆိုရင် စာလုံး ၁ လုံးပဲ မှတ်နိုင်ပေမဲ့ ဂဏန်းပေါင်း ၂၅၆ လုံးထိ ရေတွက်နိုင်ပါတယ်။

1 Bit - 2^0 - 1 - 2 Patterns

2 Bits - 2^1 - 2 - 4 Patterns

3 Bits - 2^2 - 4 - 8 Patterns

4 Bits - 2^3 - 8 - 16 Patterns

5 Bits - 2^4 - 16 - 32 Patterns

6 Bits - 2^5 - 32 - 64 Patterns

7 Bits - 2^6 - 64 - 128 Patterns

8 Bits - 2^7 - 128 - 256 Patterns

2 Bytes - 16 bits - 2^16 - 65,536 Patterns

3 Bytes - 24 bits - 2^24 - 16,777,216 Patterns

4 Bytes - 32 bits - 2^32 - 4,294,967,295 Patterns

8 Bytes - 64 bits - 2^64 - 18,446,744,073,709,551,616 Patterns

သင်္ချာမှာ + - သင်္ကေတပါတဲ့ ဂဏန်းတွေကို Signed Number လို့ခေါ်ပါတယ်။ + - သင်္ကေတမပါတဲ့ ဂဏန်းတွေကိုတော့ Unsigned လို့ခေါ်ပါတယ်။ 1 Byte မှာ Unsigned Number ဆိုရင် 0 ကနေ 255 လုံးထိ ရပါတယ်။ Signed Number မှာတော့ -128 ကနေ 0 အထိ၊ 0 ကနေ +127 အထိ ရေတွက်လို့ ရပါတယ်။ ကျန်တဲ့ Byte တွေမှာလဲ ဘယ်လိုတွက်လဲ ကြည့်ပါ။

1 Byte - 8 Bits - 0 to 255 / -128 to +127

2 Bytes - 0 to 65,535 / -32768 to +32767

3 Bytes - 0 to 16 Million / -8 Million to +8 Million

4 Bytes - 0 to 4 Billion / -2 Billion to +2 Million

8 Bytes / 0 to 18 Trillion / -9 Trillion to +9 Trillion

Go Language မှာ အတွက် Integer Type တွေက int, int8, int16, int32, int64 တွေပါ။​ int အနောက်က ဂဏန်းတွေက သိမ်းနိုင်တဲ့ Storage ကို ရည်ညွှန်းပါတယ်။​ int8 ဆိုရင် 8 bits integer, int64 ဆိုရင် 64 bits integer လို့ ဆိုလိုပါတယ်။

int8 - 8 bits integer / -128 to +127

int16 - 16 bits integer / -32768 to +32767

int32 - 32 bits integer / -8 Million to +8 Million

int64 - 64 bits integer / -9 Trillion to +9 Trillion

int ချည်းပဲ သက်သက်ကတော့ ကိုယ်အသုံးပြုတဲ့ Platform ပေါ် မူတည်ပြီး လိုက်ပြောင်းလဲ​ပါတယ်။ Example 32 Bits Platform သုံးထားရင် 32 Bits ဖြစ်သွားမယ်။ အရှေ့မှာ u ပါတဲ့ integer တွေကတော့ Unsigned Integer ကို ပြောတာပါ။ uint8 ဆိုရင် unsigned 8 bits integer ကို ဆိုလိုပါတယ်။

uint8 - unsigned 8 bits integer - 0 to 255

uint16 - unsigned 16 bits integer - 0 to 65,535

uint32 - unsigned 32 bits integer - 0 to 4 Billion 

uint64 - unsigned  bits integer - 0 to 18 Trillion
var age int8 = 97

Alias for Numeric Type

byte ကတော့ uint8 Type အတွက် အြခားနာမည်ဖြစ်ပြီး rune ကတော့ int32 အတွက်ပါ။ Unicode code point အတွက်လဲ​ အသုံးပြုနိုင်ပါတယ်။

Floating Point

Floating Point တွေ အတွက်ကတော့ float32, float64 ကို အသုံးပြုပြီး အနောက်က ဂဏန်းတွေကတော့ Integer တုန်းကလိုပဲ သိမ်းနိုင်တဲ့ ပမာဏကို ကိုယ်စားပြုပါတယ်။

var my_wealth = 15.872;

Complex Numbers

complex data type ကတော့ complex number တွေ တွက်ချက်ဖို့ သိမ်းဆည်းဖို့ အသုံးပြုပြီး complex64, complex128 ဆိုပြီး အသုံးပြုနိုင်ပါတယ်။