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.
- Değişken isimleri tek kelime olmalıdır(boşluk yok)
- Değişken isimlerinde harf, rakam ve alt tire olabilir
- Değişken isimleri rakam ile başlayamaz
Ö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
- Birincisi mimariden bağımsız olarak, tipin doğru boyuta(byte) sahip olacağı anlamına gelir
- İkincisi implementasyona özgü tiplerdir ve bu tiplerin boyutu(byte) uygulamanın derlendiği mimariye göre değişiklik gösterir.
İ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)
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