Git - Değişkenler

Değişken, programların kullanabileceği bir depolama alanına verilen addan başka bir şey değildir. Go'daki her değişkenin, değişkenin belleğinin boyutunu ve düzenini, bu bellekte saklanabilecek değerler aralığını ve değişkene uygulanabilecek işlemler kümesini belirleyen belirli bir türü vardır.

Bir değişkenin adı harflerden, rakamlardan ve alt çizgi karakterinden oluşabilir. Bir harf veya alt çizgiyle başlamalıdır. Go büyük / küçük harfe duyarlı olduğu için büyük ve küçük harfler farklıdır. Önceki bölümde açıklanan temel türlere bağlı olarak, aşağıdaki temel değişken türleri olacaktır -

Sr.No Tip ve Açıklama
1

byte

Genellikle tek bir sekizli (bir bayt). Bu bir bayt türüdür.

2

int

Makine için en doğal tam sayı boyutu.

3

float32

Tek duyarlıklı bir kayan nokta değeri.

Go programlama dili, sonraki bölümlerde tartışacağımız Numaralandırma, İşaretçi, Dizi, Yapı ve Birlik gibi çeşitli diğer değişken türlerini de tanımlamaya izin verir. Bu bölümde sadece temel değişken türlerine odaklanacağız.

Go'da Değişken Tanım

Değişken tanımı, derleyiciye değişken için nerede ve ne kadar depolama alanı yaratacağını söyler. Bir değişken tanımı, bir veri türünü belirtir ve aşağıdaki gibi bu türden bir veya daha fazla değişkenin bir listesini içerir -

var variable_list optional_data_type;

Buraya, optional_data_type byte, int, float32, complex64, boolean veya herhangi bir kullanıcı tanımlı nesne vb. dahil olmak üzere geçerli bir Go veri türüdür ve variable_listvirgülle ayrılmış bir veya daha fazla tanımlayıcı adından oluşabilir. Bazı geçerli beyanlar burada gösterilmektedir -

var  i, j, k int;
var  c, ch byte;
var  f, salary float32;
d =  42;

İfade “var i, j, k;”i, j ve k değişkenlerini bildirir ve tanımlar; bu, derleyiciye int türünde i, j ve k adlı değişkenler oluşturma talimatı verir.

Değişkenler bildirimlerinde başlatılabilir (bir başlangıç ​​değeri atanabilir). Değişkenin türü, kendisine iletilen değere göre derleyici tarafından otomatik olarak değerlendirilir. Başlatıcı bir eşittir işaretinden ve ardından aşağıdaki gibi sabit bir ifadeden oluşur:

variable_name = value;

Örneğin,

d = 3, f = 5;    // declaration of d and f. Here d and f are int

Başlatıcı olmadan tanımlama için: statik depolama süresi olan değişkenler örtük olarak nil ile başlatılır (tüm baytlar 0 değerine sahiptir); diğer tüm değişkenlerin başlangıç ​​değeri, veri türlerinin sıfır değeridir.

Go'da Statik Tip Beyanı

Statik bir tür değişkeni bildirimi, derleyiciye verilen tür ve adla kullanılabilen bir değişken olduğuna dair güvence sağlar, böylece derleyici, değişkenin tüm ayrıntılarını gerektirmeden daha fazla derlemeye devam edebilir. Değişken bildiriminin anlamı yalnızca derleme anında vardır, derleyici programın bağlanması sırasında gerçek değişken bildirimine ihtiyaç duyar.

Misal

Değişkenin bir türle bildirildiği ve ana işlev içinde başlatıldığı aşağıdaki örneği deneyin -

package main

import "fmt"

func main() {
   var x float64
   x = 20.0
   fmt.Println(x)
   fmt.Printf("x is of type %T\n", x)
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

20
x is of type float64

Go'da Dinamik Tür Bildirimi / Tür Çıkarımı

Dinamik tür değişken bildirimi, derleyicinin değişkenin türünü kendisine iletilen değere göre yorumlamasını gerektirir. Derleyici, gerekli bir gereksinim olarak statik olarak türe sahip bir değişken gerektirmez.

Misal

Değişkenlerin herhangi bir tür olmadan bildirildiği aşağıdaki örneği deneyin. Dikkat edin, tür çıkarımı durumunda, değişkeni başlattıky ile: = operatör, oysa x = operatörü kullanılarak başlatılır.

package main

import "fmt"

func main() {
   var x float64 = 20.0

   y := 42 
   fmt.Println(x)
   fmt.Println(y)
   fmt.Printf("x is of type %T\n", x)
   fmt.Printf("y is of type %T\n", y)	
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

20
42
x is of type float64
y is of type int

Go'da Karışık Değişken Bildirimi

Farklı türlerdeki değişkenler, tür çıkarımı kullanılarak tek seferde bildirilebilir.

Misal

package main

import "fmt"

func main() {
   var a, b, c = 3, 4, "foo"  
	
   fmt.Println(a)
   fmt.Println(b)
   fmt.Println(c)
   fmt.Printf("a is of type %T\n", a)
   fmt.Printf("b is of type %T\n", b)
   fmt.Printf("c is of type %T\n", c)
}

Yukarıdaki kod derlendiğinde ve yürütüldüğünde, aşağıdaki sonucu verir -

3
4
foo
a is of type int
b is of type int
c is of type string

Go'daki ldeğerler ve değerler

Go'da iki tür ifade vardır -

  • lvalue- Bir bellek konumuna başvuran ifadeler "lvalue" ifadesi olarak adlandırılır. Bir değer, ödevin sol veya sağ tarafı olarak görünebilir.

  • rvalue- rvalue terimi, bellekteki bazı adreslerde depolanan bir veri değerini ifade eder. Bir rvalue, kendisine atanmış bir değere sahip olamayan bir ifadedir; bu, bir atamanın sağ tarafında değil sol tarafında görünmeyebileceği anlamına gelir.

Değişkenler ldeğerlerdir ve bu nedenle bir atamanın sol tarafında görünebilir. Sayısal değişmez değerler r değerleridir ve bu nedenle atanamaz ve sol tarafta görünmeyebilir.

Aşağıdaki ifade geçerlidir -

x = 20.0

Aşağıdaki ifade geçerli değildir. Derleme zamanı hatası oluşturacaktır -

10 = 20