Go Synax ve Tipler

Bu yazıda Go programlama dilinde temel söz dizimi (syntax) ve tiplerden (types) bahsedeceğim

Değişken tanımlama

Go dilinde değişken tanımlamak için var anahtar sözcüğü kullanılır.

var i int

Ayrıca değişkeni tanımlarken tanımladığımız değişkene değer atayabiliriz

var i int = 0

Go dilinde değişken tanımlarken kısa değişken tanımlama yöntemini de kullanabiliriz

s := "Furkan"
i := 2

Kısa değişken tanımlama yöntemi ile değişken tanımladığımızda değişkenin tipi, atadığımız değer ne ise o olur. Yukarıdaki örnekte s değişkeninin tipi string, i değişkeninin tipi int dir

Çoklu Atama

Go dilinde aynı satırda birden fazla değişken ataması yapabilirsiniz.

h,j,k,l := true, "Furkan", 2.05, 25

Çoklu atama yaparken aynı satırda atama yaptığımız değişlenlerin tiplerinin aynı olması gerekmez.

Yukarıdaki örnekte h değişkenine bir bool değer, j değişkenine bir string değer, k değişkenine bir float değer ve l değişkenine bir int değer atanmıştır.

Zero Values

Go dili ile beraber gelen tiplerin ön tanımlı değerleri vardır. Bu tiplede değişken oluştururken herhangi bir değer ataması yapmazsanız oluşturduğunuz değişkenlerin değeri ilgili tipin zero value değeri olur.

Go dilindeki tiplerin ön tanımlı değerleri aşağıdaki gibidir.

int = 0
string = ""
float = 0
bool = false

Go dilinde tiplerin ön tanımlı değerleri olması dolayısıyla bazı dillerde olduğu gibi undefined değerler ile karşılaşmazsınız

İsimlendirme Kuralları

Go dilinde değişkenleri isimlendirmek oldukça esnek olsa da bazı kurallar vardır.

Örnekler

Doğru Yanlış Sebep
userName user-name tire kullanılamaz
user1 1user değişlenler rakam ile başlayamaz
user $user değişkenlerde sembol kullanılamaz

Bir diğer önemli nokta büyük küçük harf duyarlılığıdır. Yani userName, UserName ve USERNAME bitbirinden farklı değişlenlerdir

İsimlendirme Stili

Go dilinde değişkenlere kısa isim vermek yaygındır. user ve userName arasında bir seçim yapılacaksa, seçiminiz user olsun

Örnekler

Kabul Gören Kullanım Kabul Görmeyen Kıllanım Sebep
userName user_name alt çizgi geleneksel kullanıma uymaz
i index daha kısa olduğundan index yerine i tercih edilir
serveHTTP serveHttp kısaltmalar büyük harf olmalı
userID userID kısaltmalar büyük harf olmalı

Nümerik Tipler

Go dilinde iki çeşit sayısal tip vardır

İmplementasyona özgü tipler

int, uint, uintptr

Overflow vs Wraparound

Compile zamanında eğer compiler bir değişkene atanan değerin, o değişken tipinin max değerinden büyük olduğunu saptarsa owerflow error fırlatır

var maxUint32 := 4294967295 // Max Uint32 size
fmt.Println(maxUint32)

başarılı bir şekilde derlenir ve ekrana 4294967295 yazar

fmt.Println(maxUint32 + 1)
runtime da 1 eklersek wraparound olur ve ekrana 0(sıfır) yazar

var maxUint32 := 4294967295 // Max Uint32 size
fmt.Println(maxUint32 + 1)

compile olmaz.

Stringler

Eğer string oluştururken tek tırnak (') kullanırsak bir raw string oluşturmuş oluruz. Eğer çift tırnak (") kullanırsak bir interpreted string oluşturmuş oluruz

s1 := 'Raw string'
s2 := "Interpreted string"

UTF-8

Go dili hiç bir kütüphane, paket, veya kuruluma gerek duymakszın default olarak utf-8 destekler.

Constant

Constant lar değişkenler gibidir ancak bir kere değer atandığı zaman tekrar değiştirilemezler

const gopher = "GOPHER"

IOTA

Go dilinde iota, constant tanımlarken artan sayılarda değer üretimini basitleştirmek için kullanılır

const (
	Apple int = iota
	Orange
	Banana
)

Değerleri ekrana yazdırırsak çıktısı aşağıdaki gibi olur.
Apple = 1 Orange = 2 Banana = 3