Golang: Giriş Seviyesi

Önceki yazımda golang kurulum adımları ve hello world den bahsetmiştim. Golang programlamaya başlamak için herşeyimiz hazır. Bu yazı serisini 3 ana başlık altında toplamayı hedefliyorum.

  • Giriş Seviyesi: “variables, fmt, if/else, switch, for, func”
  • Orta Seviye: “array, struct, slices, map, select, defer”
  • İleri Seviye: “methods, interface, pointer, goroutines, channels

Yukarıda ki başlıklar şeklinde seri ilerleyecektir. Vakit kaybetmeden birinci adımdan başlayarak ilerleyelim.

Variables

Golang de değişkenler birden fazla yöntemle tanımlanabilirler. Bunlardan ilki ‘var’ ön ekini kullanarak oluşturulur.

Yukarıda görüldüğü gibi tanımlama yapılmaktadır. Fakat herhangi bir değer ataması yapmadık. Hiçbir değer ataması yapmazsak a = 0, b = “”, c = true olarak default değer atamaktadır.

Tanımlama yaparken aynı zamanda değerde atayabiliriz. Bu durumda;

Yukarıda görüldüğü gibi hem değişkenin tipini belirledik hem de değer ataması yaptık. Peki değişkenin tipini belirtmesek ne olurdu. Go değişken tipini belirmezsek bunun hangi değişken olduğunu anlıyıp programda o şekilde kullanmamıza izin vermektedir.

Aynı zamanda bir seferde birden fazla değişken tanımlayıp değer ataması yapabiliriz.

Peki her seferinde var yazmak sizede biraz sıkıcı gelmedi mi golang bunu çok güzel bir yöntem ile çözüyor.

Evet görüldüğü gibi ‘:=’ ile istediğimiz gibi hızlı şekilde değişken tanımlayabiliyoruz. Çok pratik değil mi 🙂

Tahmin ettiğiniz gibi yukarıdaki gibi de tanımlama yapılmaktadır.

Fmt

fmt paketi giriş çıkış işlemleri için kullanılan bir pakettir. C de printf ve scanf e karşılık gelmektedir. Projemizde kullanmak için,

Yukarıda görüldüğü gibi ‘fmt.Printf‘ komutu ekrana belirlediğimiz değerleri yazmakta fakat bir alt satıra inmemektedir. Ayrıca ‘%v’ ifadesi de değişkenin türünden bağımsız bir şekilde her türlü değişkeni kabul etmektedir.

Benzer şekilde ‘fmt.Println’ komutunu kullanarak aşşağıdaki çıktı elde edilebilir.

Genel kullanımda bu iki fmt fonksiyonu yeterli olmaktadır. Fakat buradı linkten daha detaylı bilgiye ulaşabilirsiniz.

If/Else

Diğer programlama dillerinden kullanım olarak hiçbir farkı yoktur. Aşağıdaki yapı bütün if/else ifadelerini karşılamaktadır.

Switch Case

Aynı şekilde if/else de olduğu gibi switch case yapısında da bir farklılık bulunmamaktadır. Aşağıda ki örnek bütün yapıyı anlatmaktadır.

For

Golang de diğer dillerin aksine sadece for döngüsü bulunmaktadır. Bu durum dezavantaj gibi görünebilir fakat dilin basitlik ilkesinede uyumlu haldedir. Aslında for bize yeter de artar bile 🙂

Normal for kullanımı:

For’un while gibi kullanımı:

Sonsuz for döngüsü:

For-each döngüsü: ‘s’ değişkeninde dizinin elemanlarını bulundurmaktadır.

Döngülerden çıkmak veye döngünün başına dönmek için kullanılan ‘break’ ve ‘continue’ ifadeleride aşağıdaki gibi kullanılabilir.

Func

0 ya da n tane parametreyi alır, işler ve 0 ya da n tane sonuç dönen şeydir fonksiyon.

Aşşağıda ki örnek ile fonksiyonun yapısını anlamaya çalışalım.

Fonksiyon, func anahtar kelimesiyle başlıyor. Daha sonra fonksiyonun adı geliyor: average, eğer parametre alıyorsa parametre adı ve tipi geliyor: xs[]float64, son olarak fonksiyonun geriye döndüğü tip: float64 deklare ediliyor.

Fonksiyonlar birden fazla girdi ve çıktıya sahip olabilirler. En çok kullanılan fmt.Printf fonksiyonun içeriğine aşağıda inceleyelim.

Yukarıda görüldüğü gibi girdi olarak string ve interface tipinde değerler alabiliyor. Fonksiyon çıktı olarak ise int ve error tiplerinde iki değişken döndürmektedir.

Fonksiyonun geri dönüş değerini kullanmak size kalmıştır Golang de sıkca karşılaştığımız error tipinin kullanımı da aşşağıdaki gibidir.

Yukarıda bir fonksiyon tanımlanmıştır burada girdi olarak string bir değer istemektedir. Dönüş değerleri ise *File ve error tipinde iki değişkendir ve dosya açma işlemlerinde ‘os’ paketinin bir fonksiyonudur. Kullanımı da aşşağıda ki gibidir.

Burada Open fonksyionu çağırılmış ve string olarak girdi değeri verilmiştir. Retur değerleri ise f ve err değişkenlerine atanmıştır. Burada dikkat edeceğimiz nokta eğer fonksiyon sorunsuz çalıştı ise err = nil olacaktır yani boş yani hata yok demektir. Bir alt satırda ise err değişkenin boştan farklı olduğu durum kontrol ettrilmektedir. Biz bazı durumlarda err değişkenini kullanmak istemeyebiliriz. Böyle bir durumda aşşağıda ki gibi dönüş değerinin yerine ‘_’ ifadesi kullanılarak o değişkeni kullanmayacağımızı belirtmiş oluruz.

Burada önemli bir hatırlatma yapmak istiyorum Golang de fonksiyonlar diğer object oriented dillerde olduğu gibi başına ‘global, private’ gibi ön ekler almazlar. Peki bir fonksiyonun local veya global olduğuna nasıl mı karar veriyoruz çok basit. 🙂 Eğer fonksiyonun/değişkenin ismi büyük harf ile başlıyorsa o fonksiyon/değişken global olarak kullanılabilir. Eğer küçük harf ile başlıyorsa fonksiyon/değişken local olarak tanımlanmıştır.

Birdaha ki yazıda daha detaya inerek devam edeceğiz.

Leave a Reply