Takip et

Go ile İlk Programınızı Yazmaya Başlarken

Go ile İlk Programınızı Yazmaya Başlarken Go (veya Golang), Google tarafından geliştirilen, açık kaynaklı, statik tipli ve derlenmiş bir

Go ile İlk Programınızı Yazmaya Başlarken

Go (veya Golang), Google tarafından geliştirilen, açık kaynaklı, statik tipli ve derlenmiş bir programlama dilidir. Özellikle yüksek performanslı ağ servisleri, mikroservisler, komut satırı araçları ve dağıtık sistemler geliştirmek için tasarlanmıştır. Basit sözdizimi, hızlı derleme süreleri ve güçlü eşzamanlılık (concurrency) özellikleri sayesinde modern yazılım geliştiricileri arasında hızla popülerlik kazanmıştır.

Bu rehberde, Go programlama ortamını kurmaktan, ilk “Merhaba Dünya!” programınızı yazmaya ve Go’nun temel kavramlarına giriş yapmaya kadar adım adım ilerleyeceğiz. Amacımız, Go dünyasına sağlam bir başlangıç yapmanızı sağlamak ve kendi projelerinizi geliştirmeye başlamanız için gerekli temelleri atmaktır.

Go Ortamınızı Kurmak

Go ile program yazmaya başlamadan önce, bilgisayarınıza Go derleyicisini ve ilgili araçları kurmanız gerekir. Bu süreç oldukça basittir ve genellikle birkaç dakika içinde tamamlanır.

Go İndirme ve Kurulumu

1. Go Resmi Web Sitesini Ziyaret Edin: En güncel Go sürümünü indirmek için https://go.dev/dl/ adresine gidin.
2. İşletim Sisteminize Uygun Sürümü Seçin: Windows, macOS veya Linux kullanıyor olun, sitenizde işletim sisteminize uygun bir yükleyici veya arşiv dosyası bulacaksınız.
* Windows: .msi yükleyicisini indirin ve çalıştırın. Kurulum sihirbazını takip edin. Go, varsayılan olarak C:\Program Files\Go dizinine kurulacaktır ve PATH ortam değişkeninizi otomatik olarak güncelleyecektir.
* macOS: .pkg yükleyicisini indirin ve çalıştırın. Kurulum sihirbazını takip edin. Go, varsayılan olarak /usr/local/go dizinine kurulacaktır.
* Linux: .tar.gz arşiv dosyasını indirin. İndirdiğiniz dosyayı /usr/local dizinine çıkarmanız önerilir. Örneğin:


        sudo rm -rf /usr/local/go
        sudo tar -C /usr/local -xzf go1.22.1.linux-amd64.tar.gz
        

(Yukarıdaki komutta go1.22.1.linux-amd64.tar.gz kısmını indirdiğiniz dosyanın adıyla değiştirmeyi unutmayın.)
Ardından, Go’nun bin dizinini PATH ortam değişkeninize eklemeniz gerekir. Bunun için ~/.profile veya ~/.bashrc dosyanıza aşağıdaki satırı ekleyin:


        export PATH=$PATH:/usr/local/go/bin
        

Değişikliklerin etkili olması için terminali yeniden başlatın veya source ~/.profile (veya source ~/.bashrc) komutunu çalıştırın.

3. Kurulumu Doğrulayın: Bir terminal veya komut istemcisi açın ve aşağıdaki komutu çalıştırın:


    go version
    

Eğer kurulum başarılıysa, Go sürüm numarasını (örneğin, go version go1.22.1 linux/amd64) görmelisiniz.

Kod Editörü Seçimi

Go ile çalışmak için özel bir IDE zorunlu değildir, ancak bir kod editörü veya IDE kullanmak geliştirme deneyiminizi büyük ölçüde iyileştirecektir. İşte bazı popüler seçenekler:

* Visual Studio Code (VS Code): Ücretsizdir ve Go eklentisi (Go by Google) sayesinde Go için mükemmel destek sunar (otomatik tamamlama, hata ayıklama, biçimlendirme vb.). Yeni başlayanlar için şiddetle tavsiye edilir.
* GoLand: JetBrains tarafından geliştirilen ücretli bir IDE’dir. Go için en kapsamlı desteği sunar ve büyük projelerle çalışan profesyoneller arasında popülerdir.
* Vim/Neovim, Emacs, Sublime Text: Deneyimli kullanıcılar için Go eklentileriyle güçlü seçeneklerdir.

Bu rehber için VS Code gibi basit bir metin düzenleyici yeterli olacaktır.

İlk Go Programınız: “Merhaba Dünya!”

Kurulumu tamamladığımıza göre, artık ilk Go programımızı yazmaya hazırız. Bu, programlama dünyasının klasik başlangıcı olan “Merhaba Dünya!” programı olacak.

1. Bir Çalışma Dizini Oluşturun: Bilgisayarınızda yeni bir klasör oluşturun. Örneğin, go_projelerim/merhaba_dunya gibi.


    mkdir go_projelerim
    cd go_projelerim
    mkdir merhaba_dunya
    cd merhaba_dunya
    

2. main.go Dosyasını Oluşturun: Seçtiğiniz kod editörünü kullanarak merhaba_dunya klasörünün içinde main.go adında yeni bir dosya oluşturun. Go programları genellikle .go uzantısıyla kaydedilir.
3. Kodu Yazın: main.go dosyasına aşağıdaki kodu yapıştırın:


    package main

    import "fmt"

    func main() {
        fmt.Println("Merhaba Dünya!")
    }
    

4. Programı Çalıştırın: Terminal veya komut istemcinizi merhaba_dunya klasörünün içinde açın ve aşağıdaki komutu çalıştırın:


    go run main.go
    

Ekranda “Merhaba Dünya!” çıktısını görmelisiniz. Tebrikler, ilk Go programınızı başarıyla yazdınız ve çalıştırdınız!

Go Kodunu Anlamak

Şimdi yazdığımız “Merhaba Dünya!” programının her bir satırının ne anlama geldiğini inceleyelim. Go’nun temel yapı taşlarını anlamak, daha karmaşık programlar yazmak için önemlidir.


package main

import "fmt"

func main() {
    fmt.Println("Merhaba Dünya!")
}

* package main
* Her Go programı bir package bildirimiyle başlar. package bir kod koleksiyonudur ve ilgili fonksiyonları, tipleri ve değişkenleri bir araya getirir.
* main paketi özel bir pakettir. Bir programın çalıştırılabilir olması için bu pakette tanımlanması gerekir. Bu, programınızın bir yürütülebilir dosya (executable) olarak derleneceği anlamına gelir.
* Go’da ayrıca kütüphane olarak kullanılabilecek başka paketler de oluşturabilirsiniz (örneğin, package mylibrary).

* import "fmt"
* import anahtar kelimesi, programınızda kullanmak istediğiniz başka paketleri dahil etmenizi sağlar.
* fmt (format) paketi, biçimlendirilmiş giriş ve çıkış işlemleri için fonksiyonlar sağlar. Örneğin, metin yazdırmak (Println), metin okumak (Scanln) gibi işlemler için kullanılır.
* Eğer bir paketi import eder ama kullanmazsanız, Go derleyicisi hata verir. Bu, gereksiz bağımlılıkları önlemeye yardımcı olan Go’nun katı kurallarından biridir.

* func main() { ... }
* func anahtar kelimesi bir fonksiyon tanımlar.
* main fonksiyonu özel bir fonksiyondur. Bir main paketindeki main fonksiyonu, programın yürütülmeye başladığı giriş noktasıdır. Programınızı çalıştırdığınızda, Go derleyicisi önce main fonksiyonunu arar ve buradaki kodları yürütmeye başlar.
* Parantezler () fonksiyonun parametre alıp almadığını belirtir. main fonksiyonu genellikle parametre almaz.
* Küme parantezleri {} fonksiyonun kod bloğunu tanımlar.

* fmt.Println("Merhaba Dünya!")
* Bu satır, fmt paketindeki Println (Print Line) fonksiyonunu çağırır.
* Println fonksiyonu, kendisine verilen metni (bu örnekte “Merhaba Dünya!”) terminale yazdırır ve ardından yeni bir satıra geçer.
* Go’da satır sonlarında noktalı virgül ; kullanmak zorunlu değildir, derleyici bunları otomatik olarak ekler. Ancak, aynı satırda birden fazla ifade yazıyorsanız kullanmanız gerekebilir, bu pek önerilmez.

Programınızı Derlemek ve Çalıştırmak

go run komutu, hızlı testler ve geliştirmeler için harikadır çünkü programınızı derler ve doğrudan çalıştırır. Ancak, bir dağıtılabilir uygulama oluşturmak istediğinizde go build komutunu kullanmanız gerekir.

1. go run ile Çalıştırmak:


    go run main.go
    

Bu komut, main.go dosyasını derler, geçici bir yürütülebilir dosya oluşturur ve çalıştırır. İşlem bittiğinde, geçici dosya silinir.

2. go build ile Derlemek:


    go build main.go
    

Bu komut, main.go dosyasını derler ve geçerli dizinde main (Windows’ta main.exe) adında bir yürütülebilir dosya oluşturur. Bu dosya, Go ortamının kurulu olmadığı bir sistemde bile bağımsız olarak çalışabilir.
Oluşturulan yürütülebilir dosyayı çalıştırmak için:


    ./main   # Linux/macOS
    main.exe # Windows
    

Bu, Go’nun derlenmiş bir dil olmasının önemli bir avantajıdır: tek bir dosya halinde dağıtılabilir, bağımsız uygulamalar oluşturabilirsiniz.

Merhaba Dünya!’nın Ötesi: Temel Kavramlar

İlk programımızı yazıp anladığımıza göre, Go’nun bazı temel yapı taşlarına göz atalım.

Değişkenler (Variables)

Değişkenler, verileri depolamak için kullanılan adlandırılmış bellek konumlarıdır. Go’da değişken tanımlamanın birkaç yolu vardır.

1. var Anahtar Kelimesiyle Tanımlama:


    var isim string = "Ayşe" // string tipinde isim değişkeni
    var yaş int = 30         // int tipinde yaş değişkeni
    var isAktif bool         // bool tipinde isAktif değişkeni, varsayılan değeri false olur
    

Go, değişkenlere varsayılan değerler atar (sıfır değeri): int için 0, string için "" (boş string), bool için false.

2. Tip Çıkarımı (Type Inference):
Go, atanan değerden değişkenin tipini otomatik olarak çıkarabilir.


    var şehir = "Ankara" // Go, "Ankara" bir string olduğu için şehir'i string olarak anlar
    var fiyat = 99.99    // Go, 99.99 bir float olduğu için fiyat'ı float64 olarak anlar
    

3. Kısa Değişken Bildirimi (Short Variable Declaration):
:= operatörü, sadece fonksiyonların içinde kullanılabilen kısa değişken bildirimi için kullanılır. Hem değişkeni tanımlar hem de değer atar, ayrıca tip çıkarımı yapar.


    ad := "Mehmet" // ad string tipinde olur
    sayı := 10     // sayı int tipinde olur
    

Örnek kod:


package main

import "fmt"

func main() {
    var mesaj string = "Merhaba Go!"
    fmt.Println(mesaj)

    yaş := 25
    fmt.Println("Yaşım:", yaş)

    pi := 3.14
    fmt.Println("Pi sayısı:", pi)

    var doğruMu bool = true
    fmt.Println("Doğru mu?", doğruMu)
}

Veri Tipleri (Data Types)

Go, çeşitli temel veri tiplerini destekler:

* Sayısal Tipler:
* int, int8, int16, int32, int64: İşaretli tam sayılar (farklı boyutlarda). int genellikle 32 veya 64 bit’tir, sistem mimarisine bağlıdır.
* uint, uint8, uint16, uint32, uint64, uintptr: İşaretsiz tam sayılar (yalnızca pozitif).
* float32, float64: Kayan noktalı sayılar. float64 genellikle tercih edilir.
* complex64, complex128: Karmaşık sayılar.
* byte: uint8 için takma ad.
* rune: int32 için takma ad, Unicode kod noktalarını temsil eder.

* Metin Tipleri:
* string: Karakter dizileri. Go’da stringler değişmezdir (immutable).

* Mantıksal Tipler:
* bool: true veya false değerlerini alabilir.

Fonksiyonlar (Functions)

Fonksiyonlar, belirli bir görevi yerine getiren kod bloklarıdır. Go’da fonksiyonlar func anahtar kelimesiyle tanımlanır.


package main

import "fmt"

// Toplama işlemi yapan bir fonksiyon
func topla(a int, b int) int {
    return a + b
}

// Birden fazla değer döndüren bir fonksiyon
func takas(x, y string) (string, string) {
    return y, x
}

func main() {
    sonuç := topla(5, 3)
    fmt.Println("Toplam:", sonuç) // Çıktı: Toplam: 8

    kelime1 := "Merhaba"
    kelime2 := "Dünya"
    yeniKelime1, yeniKelime2 := takas(kelime1, kelime2)
    fmt.Println("Takas sonrası:", yeniKelime1, yeniKelime2) // Çıktı: Takas sonrası: Dünya Merhaba
}

Yukarıdaki örnekte:
* topla fonksiyonu iki int parametre alır ve bir int değeri döndürür.
* takas fonksiyonu iki string parametre alır ve iki string değeri döndürür. Go, birden fazla değer döndürme yeteneğiyle öne çıkar.

Sonuç

Bu rehberde, Go programlama ortamını kurmayı, ilk “Merhaba Dünya!” programınızı yazmayı ve Go’nun temel yapı taşları olan değişkenleri, veri tiplerini ve fonksiyonları öğrendiniz. Go’nun basit ve temiz sözdizimi sayesinde, bu kavramları hızlıca kavradığınızı umuyoruz.

Go öğrenme yolculuğunuzda atmanız gereken ilk ve en önemli adımları tamamladınız. Şimdi bu bilgileri kullanarak daha karmaşık programlar yazmaya başlayabilir, Go’nun güçlü eşzamanlılık özelliklerini keşfedebilir ve web sunucuları veya CLI araçları gibi gerçek dünya uygulamaları geliştirebilirsiniz.

Unutmayın, pratik yapmak en iyi öğrenme yöntemidir. Go Tour (https://go.dev/tour/) gibi resmi kaynakları ve Go belgelerini (https://go.dev/doc/) inceleyerek bilginizi derinleştirmeye devam edin.

Sıkça Sorulan Sorular (SSS)

Go neden bu kadar hızlı?

Go, derlenmiş bir dildir, yani kodu doğrudan makine koduna dönüştürür. Bu, yorumlanan dillere (Python, JavaScript) göre daha hızlı çalışmasını sağlar. Ayrıca, Go’nun çöp toplama (garbage collection) mekanizması ve hafif eşzamanlılık (goroutines ve channels) modelleri, performansı artırır.

Go’da IDE kullanmak zorunlu mu?

Hayır, Go programlamak için herhangi bir metin düzenleyici kullanabilirsiniz. Ancak, VS Code veya GoLand gibi bir IDE veya gelişmiş bir metin düzenleyici kullanmak, kod tamamlama, hata denetimi, biçimlendirme ve hata ayıklama gibi özelliklerle geliştirme sürecinizi çok daha verimli hale getirecektir.

Go’yu hangi alanlarda kullanabilirim?

Go, geniş bir kullanım alanına sahiptir:

  • Web servisleri ve API’ler (örn. Gin, Echo framework’leri)
  • Mikroservis mimarileri
  • Komut satırı araçları (CLI)
  • Ağ programlama
  • Sistem programlama (örn. Docker, Kubernetes Go ile yazılmıştır)
  • Veri işleme ve büyük veri analizi

Go öğrenmek zor mu?

Go, diğer bazı dillerle (örn. C++, Java) karşılaştırıldığında oldukça basit ve öğrenmesi kolay bir dildir. Minimalist sözdizimi, açık ve tutarlı kuralları sayesinde yeni başlayanlar bile kısa sürede verimli olabilir. Özellikle C, C++ veya Java geçmişi olanlar Go’ya daha hızlı adapte olabilirler.

Go modülleri nedir?

Go modülleri, Go’da bağımlılık yönetiminin standart yoludur. Projelerinizin bağımlılıklarını (kullandığınız kütüphaneler) yönetmenizi sağlar. go.mod dosyası, projenizin hangi Go sürümünü kullandığını ve hangi bağımlılıkların hangi sürümlerinin gerekli olduğunu belirtir. go mod init komutuyla bir modül başlatılır ve go get komutuyla bağımlılıklar eklenir.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık