Değişkenler - Variables

variables

Değişken (Variable): ifadeleri programlama dillerinde değer ataması yapıldıktan sonra program tarafından işlemlere tabi tutularak değiştirilebilen hafıza öğeleri için kullanılır.

Aşağıda string türünde bir değişken ifadesi verilmiştir:

// string (metin) degisken turu
var isim string = "Gokay"

Değişkenlere Atanabilen Veri Türleri

Değişkenler basit ve karmaşık veri tiplerinde değer alabilirler:

Değişken Veri TipiAçıklama
floatondalıklı sayı değerleri
inttam sayı değerleri
booltrue ve false değerleri
stringmetin değerleri
runekarakter değerleri
bytebyte cinsinden veri degerleri
slicedizi parçaları
arraydizi değerleri
mapanahtar - değer (key-value) ikililerinden oluşan veri kümeleri
structyapısal veri türleri
interfacekapsayıcı arayüz veri türleri

Değişkende izin verilen değerler

Bir değişkende kullanımına izin verilen değerler kümesi, değişkenin tanımlanması sırasında değişkene atanan veri türüne göre belirlenir.

Örneğin, elimizde isim diye bir değişken olduğunu var sayalım. İzin verilen deger olarak degisken türünün string type bir ifade olduğunu düşünürsek isim değişken ifadesi yalnızca string veri tipinde değer tutabilir.

DIKKAT: string olarak saklanan bir değişkene, bir tam sayı integer veya ondalıklı sayı float değer verirsek, veyahut mantıksal bool bir ifade verirsek sistemden hata dönüşü alırız.

Birer örnekle neden hata döndüreceğini kısaca izah edelim


var isim string = 25
// string yerine integer deger atandığı için hata döndürür

var soyisim string = true
// string yerine boolean değer atandığı için hata döndürür

var yas integer = 25.5
// integer yerine float değer atandığı için hata döndürür

Değişkenlerin Özellikleri

Değişkenlerin özellikleri kısaca şunlardır:

  • İşleme tabi tutulabilirler.
  • Üzerlerine defalarca değer ataması yapılabilir.
  • Sistemden çağrıldıkları zaman üzerlerine son atanan değeri döndürürler.

Değişken Tanımlama

Tip Belirterek Tanımlama

İlk tanımlama şeklimiz detaylı tanımlama şeklidir. Aşağıdaki şekilde tanımlanır.

// var degiskenAdı degiskenTur = deger
var country string = "Turkey"

Tanımlama işlemine var yani variable(değişken) kısaltması ile başlıyoruz. Burada tanımladığımız değişkenin bir string ifadesi olduğunu country ismini ve "Turkey" değerini aldığını görebiliriz.

Tip Belirtmeden Tanımlama

GO programlama dili otomatik biçimde değişken türü tanıma ve atama özelliğine sahiptir. Yani eğer string, float , integer, boolean gibi bir değer tipi belirtmeden değişken tanımlıyorsak, GO bu değişkene en uygun türü kendisi atayacaktır.

var country = "Turkey"
var province = 81
var hasPresident= true

Yukarıda tanımladığımız üç değişken sırasıyla string,integer ve boolean değişken tiplerini aldılar.

Fonksiyon Scope'u İçinde Değişken Tanımlama

Eğer ifademizi bir fonksiyon içinde tanımlıyorsak şimdiye kadar anlatılanlar dışında alternatif bir kısa yazım daha mevcuttur. Fonksiyon içinde değişken tanımlarken := karakterleri ile eşitlik yazımı mevcuttur.

DİKKAT: Bu tanımlama türü, yanlızca fonksiyon scope'u içinde mümkündür.

func main(){
 country := "Turkey"
}

Hatırlarsanız daha önce country değişkenimizi aşağıdaki yöntemlerle tanımlamıştık:

var country string = "Turkey" // Tip Belirterek Tanımlama
var country = "Turkey" // Tip Belirtmeden tanımlama

Şimdi ise değişkenimizi country := "Turkey" şeklinde tanımlıyoruz. Bunun sebebi, tanımlamayı {} süslü parantezler ile kapalı bir fonksiyon scope'u içinde gerçekleştirmemizdir.

Birden Çok Değişkeni Tek Satırda Tanımlama

Eğer elimizde birden çok değişken varsa ve bunları tek satır içerisinde tanımlamak istiyorsak aşağıdaki yazım türünde faydalanırız:

var b, c int = 1, 2  // b = 1 ve c = 2

Burada b ve c olmak üzere, iki adet int türünde değişken ifadesini tek bir satır içerisinde virgül ile ayırarak tanımladık. Yorum ifadesinde de belirtildiği üzere b=1 ve c=2 değerlerini almıştır.

Aynı şekilde değişken tipini yazmadan da değişkene değer atama işlemi yapabiliyoruz. GO otomatik olarak değişken türünü tanımlayıp atamasını yapmaktadır.

var en, boy = 100, 50

Eğer değişken türleri farklı ise tek satırda tanımlama aşağıdaki şekilde yaılmaktadır.

var paraVar bool, miktar float64 = true, 55000.25

/*
var bool paraVar = true
var float64 miktar = 55000.25
*/

aynı ifadeyi bir de kısaltılmış olarak yazabiliriz.

var paraVar, miktar = true, 55000.25

/*
var paraVar =true
var miktar = 55000.25
*/

Biraz daha uzun bir şekilde tanımlama işlemi yapalım:

var isim ,soyisim , matematik , edebiyat , gecmeDurum , ortalama = "Ahmet","YILMAZ", 74, 83, true, 75.8

/*
isim = "Ahmet"
soyisim ="YILMAZ"
matematik = 74
edebiyat = 83
gecmeDurum = true
ortalama = 75.8
*/

Değişken Türlerinin Görüntülenmesi

Değişken türlerini görüntülemek için aşağıdaki kod yapısını kullanıyoruz.

func main() {

	var kilo float32 = 70
	var boy int32 = 175

	//  \n - bir alt satıra geç ve boşluk bırak
	// anlamındaki kaçış karakteri (escape characters)
	// %T -  Öğe türüne ait bilgileri getiren argümandır
	// fmt.Printf()  - Formatlanmış olarak ekranda görüntüleme yapmayı sağlayan ifadedir
	fmt.Printf("Kilo: %T\n", kilo)

	// %f - float cinsinden değer görüntüler
	// %d - integer cinsinden değer görüntüler
	fmt.Printf("Boy: %d Kilo: %f\n", boy, kilo)

	// boy için hata döndürür
	fmt.Printf("Boy: %f Kilo: %f\n", boy, kilo)

	//kilo için hata döndürür
	fmt.Printf("Boy: %d Kilo: %d\n", boy, kilo)

	// değişken türlerini görüntüler
	fmt.Printf("Boy: %T Kilo: %T\n", boy, kilo)
}

Yukarıdaki script'i yazdığımzda aşağıdakine benzer bir çıktı alırsınız:

Kilo: float32
Boy: 175 Kilo: 70.000000
Boy: %!f(int32=175) Kilo: 70.000000
Boy: 175 Kilo: %!d(float32=70)
Boy: int32 Kilo: float32

Burada float32 ve int32 gibi veri tipleri gördünüz. 8,16,32,64 gibi değerler bit cinsinden değerler olup bu veri tiplerinin alabileceği minimum ve maksimum değerleri temsil ederler. Daha ayrıntılı olarak veri tipleri konusunda bilgilendirme yapılacaktır.

Uygulama: Değişkenlerin Tanımlanması

Aşağıda bir uygulamamız bulunuyor. Bu uygulamada birden çok değişken tanımlıyoruz ve fmt yardımı ile sonuçları ekrana yazdırıyoruz.

Yeni bir main.go dosyası oluşturup aşağıdaki kodları dosyanıza yapıştırıp döndürülen sonuçları inceleyebilirsiniz:

package main

import "fmt"

func main(){

  // sehir isimli bir string degiskeni
  sehir := "Edirne"

  // kilo ve boy isimli bir float degiskenleri
  var kilo float64 = 75.3
  var boy float64 = 182.3

  // yas isimli bir integer degiskeni
  yas := 30

  // mezuniyet ve askerlik isimli boolean degiskenleri
  var mezuniyet,askerlik bool = true, true

  // ifadeyi ekrana yazdır
  fmt.Println(boy,kilo,yas,sehir)
  fmt.Println(mezuniyet, askerlik)

  // Tek satırda birden çok deger tanımlaması
  var isim ,soyisim , matematik , edebiyat , gecmeDurum  = "Ahmet","YILMAZ", 75, 83, true

  // Çoklu değer tanımlaması kısa gösterim
  //isim ,soyisim , matematik , edebiyat , gecmeDurum  := "Ahmet","YILMAZ", 75, 83, true

  // degerleri ekrana yazdır
  fmt.Println(isim,soyisim,matematik,edebiyat,gecmeDurum)
}