Zafer Çelenk

Yazılım, hayaller ve hayat üzerine notlar

Go dilinde değişken ve veri türleri

Veri türleri programlama dilinin en temel olanaklarıdır. Biz programcılar uygulamalarımızı geliştirirken sürekli olarak veri ile iç içe çalışırız. Bu süreçte verinin bilgisayar tarafından doğru anlamlandırılmasını sağlamak içinde veri türlerini kullanırız.

Veri türlerinin önemini anlamak ve bilgisayarların veriyi anlamlandırmasını kavramak adına bir benzetme üzerinden bu kavrama yaklaşmakta fayda vardır. Bu benzetimde gözlerimizin tamamen kapalı olduğunu ve hiç bir şey görmediğimizi düşünelim. Diyelim ki karşınızda sıralanmış üç tane baharat kavanozu var. Bu kavanozların içinde ise farklı çeşitlerde baharatlar var. Bu durumda iken ben sizden kırmızı biber istesem bunu nasıl bulabilirsin? Mevcut durumda bunun için bir tahminde bulunmanız gerekir. Böyle bir tahminde doğru kavanozu bulma şansınız 13’tür. Ancak bilgisayar dünyasında işler böyle tahminlerle yürümez. Bunun yerine daha akıllıca bir sistem kurmak gerekir. Örneğin her bir kavanoza soldan başlayarak bir numara vermiş olsak ve size bir numara kara biber, iki numara kırmızı biber ve üç numara kekik kavanozu deseydim. Muhtemelen sol baştan sayarak iki numaralı kırmızı biber kavanozunu bulacak ve bana kırmızı biberi uzatabilecektiniz.

İşte bilgisayarın veri erişim sistemide buna benzer bir mantıkla çalışır. Yani bellekte her bir veri hücresine bir numara atanır. Böylece bilgisayar bellekteki her hücreye numarası üzerinden erişim imkanına kavuşmuş olur. Ancak bu yeterli değildir. Ayrıca her bir hücreye veri eklerken ne türde bir veri yerleştirdiğimizide bilgisayara söylememiz gerekir. Örneğimizde iki numaralı kavanoza kırmızı biber türünde bir baharat yerleştirdiğimiz gibi. İşte bilgisayarda bu sistemi kurgulamak için veri türlerine ihtiyaç duyarız. Yani bellekteki her hargi bir hücreye veri yerleştirirken bilgisayara deriz ki buraya veri yerleştiriyorum ve bunun türü sayı veya metin veya geçerli başka bir tür veri. Dolayısıyla bilgisayar artık ilgili hücreyi numarasından, içindeki veriyi ise veri türünden dolayı tanımlayabilir ve biz bunu geri istediğimizde bize kolaylıkla geri sunabilir.

Go dili C, C++, Pascal gibi sabit türlerle çalışan bir dildir. Bundan dolayı Go dilinde bir değişken tanımlama esnasında tür tanımı yapılır ve değişken yaşam süresi boyunca tanımlı olduğu türe özgü verilerle çalışabilir. Eğer daha önce dinamik dillerle (PHP, Python, Nodejs vb.) tecrübeniz olduysa dinamik dillerde değişken kavramının daha esnek olduğunu görmüş olmalısınız. Go dili ise değişken türleri ile ilgili daha net kurallara sahiptir.

Go dili ihtiyacımıza uygun olarak bize farklı veri türlerini sunar. Bununla birlikte biz geliştiricilere kendi türlerimizi tanımlama ve kullanma olanağınıda verir. İsterseniz öncelikle Go dilinin içinde yerleşik gelen veri türlerine birlikte bakalım.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
bool

string

uint8       işaretsiz  8-bit (0 - 255)
uint16      işaretsiz 16-bit (0 - 65535)
uint32      işaretsiz 32-bit (0 - 4294967295)
uint64      işaretsiz 64-bit (0 - 18446744073709551615)

int8        işaretli  8-bit (-128 - 127)
int16       işaretli 16-bit (-32768 - 32767)
int32       işaretli 32-bit (-2147483648 - 2147483647)
int64       işaretli 64-bit (-9223372036854775808 - 9223372036854775807)

float32     32-bit kayan noktalı sayı
float64     64-bit kayan noktalı sayı

complex64   tüm karmaşık sayılar kümesi float32 gerçek ve sanal bölümü
complex128  tüm karmaşık sayılar kümesi float64 gerçek ve sanal bölümü

byte        diğer adıyla uint8
rune        diğer adıyla int32

Bu türler dilin temel türleridir. Programlarınızda hiç bir ön tanımlama yapmadan direk kullanabilirsiniz. Bu türler büyük ihtimalle işlerinizin büyük bir bölümünde yeterli gelecektir. Ancak yetersiz kaldığı veya daha kullanışlı türlere ihtiyaç duyduğunuz durumlarda Go dili kendi türlerinizi tanımlama imkanıda sunmaktadır.

Şimdi ise bu türleri kullanarak değişken tanımlama olanaklarına bakalım. Go dilinde bir değişken tanımlamak için birden çok yol vardır. Değişken tanımı için var anahtar kelimesi kullanılır. Bununla birlikte bu anahtar kelimeyi kullanmadan değişken tanımlama olanaklarıda vardır.

1
var sayi int

Yukarıdaki tanımlama bize ve bilgisayara sayı isimli bir değişkenin int türünde olduğunu söyler. Bununla birlikte aşağıdaki tanımlamada yukarıdaki ile aynı sonucu verecektir.

1
plaka := 55

Bu ikinci örnekte Go dilinin tip çıkarsama özelliği devreye girmiş ve sol tarafada verilen değişkenin türü sağ taraftaki değerden faydalanılarak otomatik olarak tespit edilmiştir. Bununla birlikte plaka değişkeni tanımlandığı satırda türü int olarak belirlenmiş ve sabitlenmiştir. Bundan sonraki kullanımlarda plaka değişkeni int türünde bir değişken olarak davranmaya devam edecektir.