Değişkenler - 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 Tipi | Açıklama |
|---|---|
float | ondalıklı sayı değerleri |
int | tam sayı değerleri |
bool | true ve false değerleri |
string | metin değerleri |
rune | karakter değerleri |
byte | byte cinsinden veri degerleri |
slice | dizi parçaları |
array | dizi değerleri |
map | anahtar - değer (key-value) ikililerinden oluşan veri kümeleri |
struct | yapısal veri türleri |
interface | kapsayı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:
stringolarak saklanan bir değişkene, bir tam sayıintegerveya ondalıklı sayıfloatdeğer verirsek, veyahut mantıksalboolbir 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)
}