Golang — 101

Mustafa Dikyar
4 min readOct 8, 2021

Herkese selamlar, bu doküman go diline çalışırken oluşturduğum temel seviyedeki örnekleri içerir.

Kodlar arasında bol bol kendi notlarımı da serpiştirdim tabi. Kendi öğrenme sürecimde hem kendime hem de ihtiyaç duyan herkese ilk zamanlarda inceleyeceğimiz Hello World’den başlayarak temel seviyede bir doküman oluşturmayı hedefliyorum. Keyifli okumalar.

Yeni bir dil öğrenirken ki geleneğimizi bozmayarak öncelikle go dilinde dünyayı selamlayalım. :)

Temel konularımızdan değişken tanımlamaları ile ilgili kodlarımız aşağıdaki gibidir.

Kullanımları incelediğimiz zaman yabancı gibi gelecek tek konu := atama işlemleridir diye düşünüyorum. var anahtar kelimesini ve değişken tipini belirtmeden hızlıca değişken tanımlamamızı sağlıyor.

Sabitler konusundaki örnek kodlarımız:

Operatörler konusuna bakacak olursak eğer diğer dillerde biraz tecrübe sahibiyseniz oradaki kullanımlar ile birebir ortaklıklar gösterdiğini göreceksiniz.

Aritmatik Operatörler
İlişkisel Operatörler
Mantıksal Operatörler
Atama Operatörleri

Boş tanımlayıcı (break identifier) konusuna gelecek olursak eğer temel olarak örneğin bir metottan dönen değerlerden bir veya birkaçını kullanmak istemediğimiz durumlarda _ (alt çizgi) ifadesiyle bu değerleri karşılıyoruz.

Bu konuda yukarıdaki örneğimizi incelediğimiz zaman 0, 15 ve “” değerlerinin değişkenlere atanılmaya çalıştığını görmekteyiz. Bu değerlerden 0 ve “” olan değerleri kullanmayacağımız durumlarda go dilinin yapısı gereği kullanılmayan hiçbir şeyi tanımlayamayacağımız durumunu göz önünde bulundurarak bir hata ile karşılaşacağız. Bu istenmeyen durumdan kaçmak istediğimiz zaman _ (alt çizgi) ifadesiyle bu değerleri karşılamamız gerekiyor.

Enumlar konusuna gelecek olursak eğer diğer dillerde olduğu gibi doğrudan bir enum kullanımı go dilinde söz konusu değil.

Dili tasarlayan arkadaşların temel yaklaşımı eğer temel olarak elimdeki şeyler ile bir konuda çözüm üretebiliyorsam eğer dil içerisine bu konuyla ilgili neden yeni bir şey ekleyelim ki.

Yukarıdaki cümlemize üzerinden olabildiğince basit bir şekilde sabitler ve fonksiyonları kullanarak bu konuda oldukça işlevsel bir yaklaşım uygulayabiliriz. İşte örnek kodlarımız :

Tip dönüşümleri de olabildiğince basit şekilde ele alınmış go dilinde. Dönüşüm işlemleri için strconv paketini projemize dahil ederek işe başlıyoruz ve örnek kullanımlar :

Tarih ve saat işlemlerini incelediğimiz zaman time paketi ile karşılaşıyoruz ve örnek kullanımlar :

İf-else yapısına gelecek olursak diğer dillere aşina olan arkadaşlar için oldukça basit bir kullanımı var.

Switch konusuna gelecek olursak bir önceki cümlemi tekrarlamaktan öteye gidemiyorum. :)

For döngüsü kullanım örneği :

While döngüsü konusunda da enumları incelerken kurduğum cümleler üzerinden for döngüsünü kullanarak bu işin üstesinden geliyoruz.

Range konusuna gelirsek, for döngüsü ile bir slice veya map üzerinde çalışırken range ile her adım için bize iki parametre döndürür. Birinci parametre index’i ifade ederken, ikinci parametre ise dizindeki değerin bir kopyasını ifade eder.

Maps’leri inceleyecek olursak csharp tarafındaki dictionary kullanımına benzetebiliriz. Bu konu üzerindeki örnek kullanımı da buraya bırakıyorum.

Hata yönetimi konusunda hayatımıza giren errors paketini ve aşağıdaki olabildiğince basit örneği incelediğimiz zaman yabancı kavramlardan bir tanesi nil keywordu ki kendisi bizim diğer dillerden aşina olduğumuz null keywordu yerine kullanılıyor. errors.New(“”) ile de tabiri caizse hata mesajları fırlatabiliyoruz.

Diziler konusuna geldiğimiz zaman yine kullanımların dilin yapısına biraz aşina olduktan sonra olabildiğince basit olduğunu aşağıdaki örnekler üzerinden inceleyebilirsiniz.

Eleman sayısı belirli olmayan dizilere bakacak olursak, eleman sayısını belirttiğimiz kısıma ifadesinin geldiğini görüyoruz.

Şimdi de bu diziler ile for döngüsünün buluştuğu bir örnek inceleyelim.

Slice konusuna geldiğimiz zaman bir dizinin bir dilimini aldığımızı düşünebiliriz. Bir slice veri tutmaz. Slice üzerinde yapılan bir değişiklik ilgili diziyi de etkiler.

Şimdi de string metotlar konusunda neler yapabiliyoruz bunu inceleyelim.

Fonksiyonlar (metot) konusuna geldiğimiz zaman bizi birçok farklı kullanım karşılıyor.

İşte fonksiyonu çağıran arkadaşımızı selamladığımız bir örnek:

İşin içerisine parametreleri ve dönüş tipini ekleyecek olursak :

İşte birden fazla dönüş tipi olan fonksiyon örneğimiz :

Peki ya fonksiyonumuz değişken sayıda parametre alıyorsa :

Son olarak bir de anonim metotlarımız yani tek kullanımlık ve kullanıldıktan sonra hafızadan uçup giden fonksiyonumuza dair bir örnek :

Bir de defer anahtar kelimesi var ki bu arkadaşımız da içerisinde bulunduğu fonksiyondaki tüm işlemler bitene kadar ilgili işlemi bekletir.

Ufak bir sahte veri tabanı senaryosu üzerinden incelersek :

Sırada struct konusu var. Struct ifadesi diğer dillerden aşina olduğumuz sınıflara karşılık geliyor. Hemen örneğimizi inceleyelim.

Burada değinebileceğimizi düşündüğüm kurucu metotlar konusunun da doğrudan bir karşılığı yok. Bu konudaki örnek kullanımı da buraya bırakıyorum.

Interface konusunda küçük bir örnek kullanım :

Son olarak erişim belirteçleri konusunda da şu notları buraya bırakıyorum.

GoLang 101 seviyesinde çalışırken aldığım notları bu dokümanda toparlamaya çalıştım. Umarım faydalı olur.

Dokümanın github reposunu incelemek isteyenler için : https://github.com/mustafadikyar/lets-go

Keyifli kodlamalar.

--

--