Go Programlama Dili (Golang) Dersleri: Bölüm 1

GoLection
6 min readJul 24, 2021

--

Bu yazı dizisinde Google’ın içerisindeki bir ekip tarafından geliştirilen ve 2009 yılında duyurulan go programlama dilinin temellerini öğreneceksiniz.

Go basit, güvenilir ve etkin yazılımlar geliştirmeye imkan tanıyan açık kaynak bir programlama dilidir.

Go, görece yeni bir programlama dilidir. Her ne kadar mevcut dillerin bazı özelliklerini taşısa da karmaşık ve güvenilmez kodlara yol açan özelliklerden kaçınmıştır.

Go’nun nesne-temelli bir programlama dili olduğu söylenebilir. Ancak bunun aksinin savunulması da pekala mümkündür. Çünkü Go’nun bu konudaki yaklaşımı C++, Java ve C# gibi diğer dillerden oldukça farklıdır.

Go static olarak yazılan bir programlama dilidir. Dinamik diller hızlıca uygulama geliştirmeye olanak sağlar. Çünkü kullandığınız bir değişkenin tipi konusunda endişe etmek zorunda kalmazsınız. Ancak bu durum performans ve sürdürülebilirlik açısından birtakım sorunları da beraberlerinde getirir. Statik olarak yazılan programlama dilleri ise güvenlik ve performans sağlar.

Concurrency (eşzamanlılık) go’nun önemli özelliklerinden biridir. Bilgisayarlarımız birden fazla işlemci çekirdeği ve daha fazla güç içerecek şekilde gelişti. Ama modern bilgisayarların sağladığı bu güç mevcut programlama dilleri tarafından iyi bir şekilde kullanılamıyordu. Go ise modern bilgisayarlar için yüksek performans sunan eşzamanlı uygulamalar yazmaya olanak sağlamaktadır.

Büyük bir go uygulaması saniyeler içerisinde derlenebilir. C veya C++ ile yazılmış büyük uygulamaları compile etmek geliştiriciler için zor ve sancılı bir süreçti. Go ise bu sorunu çözecek biçimde tasarlanmıştır.

Go genel amaçlı bir programlama dilidir. Farklı diller farklı türde uygulamalar geliştirmek için kullanılabilir. Her ne kadar go sistem programlama dili olarak tasarlanmış olsa da güçlü uygulamalar ve back-end sunucuları geliştirmek için kullanılabilir. Docker ve Kubernetes gibi devrimsel nitelikteki bazı uygulamalar Go programlama dilini tercih etmektedir.

Go oldukça geniş bir kullanıcı kitlesine sahiptir ve bu kitle her geçen gün büyümektedir. Sizinle aynı programlama dilini kullanan geliştiricilerin çokluğu karşılaştığınız sorunları kolaylıkla çözebilmenize katkı sağlar. Çünkü muhtemelen aynı sorunlarla karşılaşan ve bunlar üzerine kafa yoran pek çok insan mevcuttur.

JetBrains’in 2020 yılında yaptığı araştırmaya göre Go, yazılım geliştiricilerin kullanmayı veya geçiş yapmayı istediği programlama dillerinin başında gelmektedir. Tabloda gördüğünüz gibi, Python geliştiricilerinin %17’si, Javascript geliştiricilerinin %16’sı, Java geliştiricilerinin ise %15’i Go kullanmayı veya Go’ya geçiş yapmayı düşünmektedir. Go kullanıcılarının ise büyük bir kısmı bulundukları yerden memnun görünmektedir.

KURULUM

Go’yu bilgisayarınıza kurmak oldukça kolaydır.

  1. golang.org adresine girin.
  2. Üst menüdeki documents linkine tıklayın.
  3. Yükleme talimatları için installing go sayfasına gidin.
  4. İşletim sisteminizi seçin ve ilgili dosyayı bilgisayarınıza indirin.
  5. Kurulumu tamamladıktan sonra, eğer Windows işletim sistemi kullanıyorsanız komut istemini, Linux veya macOS kullanıyorsanız terminali açın.
  6. Karşınıza çıkan ekrana go version komutunu yazın ve enter’a basın.
  7. Eğer doğru versiyonu görüyorsanız go bilgisayarınıza başarılı bir şekilde yüklenmiş demektir.

Eğer Go’yu bilgisayarınıza kurmak istemiyorsanız go playground’u kullanabilirsiniz.

Go Playground, golang.org’un sunucularında çalışan bir web servisidir. Bu servis, yazmış olduğunuz go kodlarını alır, derler, çalıştırır ve sonucu web sayfasının içerisinde gösterir.

Ancak playground’un birtakım limitleri olduğunu, yani bu servis ile bazı şeyleri yapamayacağınızı unutmayın. Tarihle çalışmanız gerekiyorsa, işlemci veya hafıza kullanımını gerektiren bir işlem yapacaksanız bu limitlerle karşılaşabilirsiniz. Ayrıca playground’da çalıştıracağınız programlarla internete erişim sağlayamazsınız.

Bu yazı dizisinde yapacağımız pek çok iş için playground yeterli olacaktır. Ancak daha ileri konuları takip edebilmek için go’yu kendi bilgisayarınızda çalıştırmanız gerekebileceğini unutmayın.

Bilgisayarınıza bir geliştirme ortamı kurmak sizin için epey faydalı olacaktır. Bu konuda size iki alternatif göstereceğim:

Visual Studio Code ücretsiz ve açık kaynak bir programdır. Bu video serisinde herkes tarafından erişilebilir olması sebebiyle VS Code kullanacağız.

İkinci önerim ise Goland. Goland, JetBrains tarafından go geliştiricileri için üretilmiş bir geliştirme ortamıdır. Esasında ücretli bir programdır. Fakat bir üniversitede öğrenci veya akademik personelseniz Goland’i ücretsiz olarak kullanabilirsiniz. Eğer üniversiteniz tarafından verilmiş bir e-posta adresine sahipseniz bu alternatifi deneyebilirsiniz.

Eğer siz de VS Code’u tercih ettiyseniz bir eklenti kurmanız gerekiyor. Gelin ona bir göz atalım.

VS Code’u açın ve yan tarafta bulunan eklentiler tabına tıklayın. Go eklentisini markette aratın. Muhtemelen ilk sırada karşınıza Go ekibi tarafından geliştirilmiş eklenti çıkacaktır. Bunu bilgisayarınıza yükleyin. Daha sonra programı yeniden başlatmanız istenebilir. VS Code birtakım şeyleri kurmak için sizden onay talep edebilir. Bütün bu adımları takip edin ve kurulumu tamamlayın.

PACKAGES

Bu yazıda tek işlevi terminale “Hello World” yani “Merhaba Dünya” yazdırmak olan oldukça basit bir program kodlayacağız. Burada amacımız, go programlama dilinin genel yapısını incelemek olacak.

Hadi başlayalım.

Bilgisayarımda playground adında bir klasör oluşturdum ve bu klasörü vs code’da açtım. Siz de bilgisayarınızın istediğiniz herhangi bir yerinde bir klasör oluşturabilirsiniz.

Bu klasörün içerisinde main.go adında bir dosya oluşturalım.

Go programları tıpkı bir kitap gibi yukarıdan aşağı ve soldan sağa okunur.

Her go programı çeşitli paketlerden oluşur. Bütün go dosyaları bir paket beyanıyla başlar. Paketler go kodlarını organize etmeye ve yeniden kullanmaya yarar.

Bunların içerisinde main paketi özel bir önem taşır. Çünkü program çalışmaya bu paketten başlayacaktır.

Go ile iki tip program yazabilirsiniz: İcra edilebilir programlar ve kütüphaneler. İcra edilebilir bir program yazmak için main pakedini kullanmalısınız. Zira icra edilebilir bir programın başlangıç noktası main paketindeki main fonksiyonu olacaktır.

Import ifadesini kullanarak başka paketleri uygulamanıza çağırabilirsiniz.

Hadi fmt pakedini uygulamamıza Import edelim. Fmt format kelimesinin kısaltmasıdır, girdi ve çıktıları biçimlendirmek için kullanılır.

Bu örnekte fmt pakedini terminale bir yazı yazdırmak için kullanacağız. Dikkat ederseniz fmt ifadesini çift tırnak içerisinde yazdık.

// ile başlayan satırlar yorum satırıdır. Yorumlar go derleyicisi tarafından görmezden gelinir. Yani uygulamanın çalışma biçimini etkilemezler. Bunları kendimiz için veya yazdığımız kodu daha sonra okuyacak üçüncü kişiler için açıklama bırakmak için kullanırız.

/* */ kullanarak birden fazla satırdan oluşan yorumlar yazmak da mümkündür.

Main fonksiyonunu tanımlayalım.

Fonksiyonlar bir go programının yapı taşlarıdır. Bunları birden fazla ifadeyi içlerinde barındırabilen kod blokları olarak tanımlayabiliriz. Ancak örnekte olduğu gibi herhangi bir parametre almayan, hiçbir şey döndürmeyen ve yalnızca bir ifade içeren fonksiyonlar tanımlamak da mümkündür.

Daha önce de ifade ettiğimiz gibi main fonksiyonu özeldir. Çünkü uygulama çalışmaya başladığında bu fonksiyon çağırılır.

Println, fmt pakedinin içerisindeki bir fonksiyondur. “Print Line” ifadesinin kısaltmasıdır. İşte uygulamayı çalıştırdığımızda terminale Hello World yazısını yazdıran fonksiyon budur.

VS Code içerisindeki gömülü terminali açalım ve ilk go uygulamamızı çalıştıralım. Go uygulamalarını çalıştırmak için go run komutunu kullanacağız.

Gelin bir paket daha import edelim. Eğer birden fazla paketi import etmek istiyorsanız parantez kullanarak daha temiz bir kod yazabilirsiniz. Ancak isterseniz import ifadesini birden fazla kez kullanmanız da mümkündür.

Bu örnekte math pakedini pi sayısını elde etmek için kullanacağız.

Go programlama dilinde bir değişkeni, bir fonksiyonu veya herhangi başka bir veriyi farklı paketlerde kullanmak (yani pakedin dışına export etmek) istiyorsanız büyük harfle başlayan bir isim kullanmalısınız. Export edilmeyen isimlere paketin dışından erişilemez.

--

--