Go- Dəyişənlər

Go- Dəyişənlər

TL;DR Bu bölmədə dəyişənlərlə tanış olacağıq. Dəyişənlərin(Variables), sabitlərin(constants), tiplərin(types), funksiyaların(functions) və s.-in adlandırılmasında rəqəmlər və hərflərdən daha dəqiq desək, Unicode-da hərf hesab olunan simvollardan istifadə olunur. "_" (altdan xətt) simvolu Unicode-da simvol hesab olunur. Bu səbəbdən adlandırmada isitfadəsi mümükündür. Adlandırma hər zaman hərflə başlamalıdır. Əks halda Go-da kodun kompilasiyası zamanl xəta əks olunacaqdır. Bundan əlavə olaraq, andanlandırmada Go dilində olan rezerv olunmuş açar sözlərdən istifadə olunmamalıdır. Go registerdən asıllı proqramlaşdırma dilidir. Bu səbəbdən də myVariable və myvariable ad olaraq, fərqlənirlər. Go dilində adlandırmada camelCase stilistikasından istifadəsi qəbul edilir. Məhz bu səbəbdən snake_case stilistikasından istifadəsi zamanı İDE-də xəbərdaredici məlumatı görmək mümkündür.

Dəyişəni elan etmək üçün, dəyişənin adı, tipi və dəyəri təyin olunmalıdır. Dəyişənin elan olunması var açar sözü ilə başlayır.

var myVar string="variable string" // (1)
var another string  // (2)

Go dilinin xüsusiyyətlərindən biri, dəyişənlərin elan olunmasının müxtəlif hallarının mövcudluğudur. Beləki, 2-ci sətirdə olduğu kimi ilkin dəyəri göstərmədən də təyin(initialize) etmək mümkündür. Bu zaman Go, bu dəyişən üçün, ilkin dəyəri, təyin olunmuş dəyişənin tipinə əsasən susmaya görə təyin edir:

Sətir tipləri üçün - ""(boş sətir) Ədəd tipləri üçün - 0(sıfır) Məntiqi tip üçün - false Referans(Reference) tipi üçün - nil

Dəyişənin elan olunmasını, həmin dəyişənin tipini yazmadan da etmək mümkündür. Bu halda, Go dəyişənin tipini, dəyişənin elan olunması zamanı, təyin olunan dəyərə əsasən müəyyən edir.

var noType =  100

Bir neçə dəyişənin eyni anda elan olunması da mümkündür.

var a,b,c int //(3)
var d,e,f="hello",42,true //(4)

var ( price int //(5)
         qty   int 
         isDeletable  bool
       )

3-cü sətirdəki dəyişənlər(int-tipində olduqları üçün) dəyərlərini susmaya görə 0 alacaqlar. 4-cü sətirdə Go dəyişənlər üçün uyğun tipləri edəcəkdir(string, int və bool) 5-ci sətirdən başlayaraq bir neçə dəyişənin eyni anda elan edilməsinin mümkünlüyü əks olunubdur.

var açar sözü ilə dəyişənlərin elan olunmasının məqsədi, bu dəyişən üçün ilkin dəyərin olmasının vacib olmadıqda istifadə olunur.

Lokal dəyişənlərin elanı və onlara dəyərin mənimsədilməsi mənimsədilməsi üçün dəyişənin elan olunması qısaldılmış sintaksis formasından istifadə olunur.

pathToFile := getPath //(6)

Eyni şəkildə də bir neçə dəyişənin eyni zamanda elan edilməsi(Eynilə 4-cü sətirdə olduğu kimi) də mümkündür.

str, number, isExist := "new string", 42, true

Dəyişənlərın qısa formatda elan olunması ilı bağlı məhdudiyyət mövcuddur. İfadənin sol tərəfində, ən azından bir yeni(əvvəldən elan olunmamış) dəyişən iştirak etməlidir.

str, number := "override string", 10 //no  new variables on left side of :=

Əgər iki dəyişəndən biri yenisi ilə ifadə olunarsa, o zaman proqram icra olunacaqdır. Bu halda əvvəldən elan olunmuş dəyişən üçün, ifadə mənimsətmə olaraq, yeni dəyişən üçün isə elan olunma(dəyişənin elan olunması) kimi başa düşülür. Bu hal tez-tez istifadə olunur: Misal olaraq, funksiya 2 və daha çox dəyərdən ibarət nəticə( funksiyanln qaytardığı nəticə və xəta) qaytararsa. Həmçinin də "_" (altdan xətt) simvoluna da toxunmaq olar, hansı ki, dəyişənin özü lazım olmadığına baxmayaraq, kodda dəyişənin istifadəsinə zərurət yaradır.

var path string="/path/to/file"
f,err = os.Open(path)
str,_:=getParams() //getParam 2 sayda dəyər qaytarır