Ana içeriğe geç

Go

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/go-language

Kısaca

Go, sadelik ve hızlı derleme için tasarlanmış; çöp toplama ve goroutine'lerle yerleşik eşzamanlılık sunan, derlenen ve statik tipli bir dildir.

Go programlama dili nedir?

Go, Google'da Robert Griesemer, Rob Pike ve Ken Thompson tarafından geliştirilen ve 2009'da yayımlanan açık kaynaklı bir programlama dilidir. İlk web sitesi adresinden dolayı sık sık "Golang" diye anılır; bu ad aramada bulmayı da kolaylaştırır. Go, büyük kod tabanlarını okunur ve bakımı kolay tutmak için tasarlandı: az sayıda anahtar sözcük, tek bir standart biçimlendirme aracı (gofmt) ve tek başına çalışabilen bir çalıştırılabilir dosyaya hızlı derleme sunar.

Go statik tiplidir ve count := 5 gibi kısa bildirimler derleyicinin tipleri çıkarmasına izin verir. Bir tip, bir arayüzü (interface) ayrıca bildirmeden yalnızca doğru metotlara sahip olarak karşılar; jenerikler Go 1.18'den beri mevcuttur. Bellek çöp toplayıcıyla yönetilir, ancak Go'da işaretçiler (işaretçi aritmetiği olmadan) ve değer tipleri de vardır; bunlar geliştiriciye belleğin nasıl düzenleneceği üzerinde bir miktar kontrol verir. Hatalar istisna olarak fırlatılmak yerine fonksiyonlardan dönen sıradan değerlerdir, bu yüzden hata verebilecek her çağrıdan sonra genellikle if err != nil denetlenir.

Go'nun imza özelliği yerleşik eşzamanlılıktır. go anahtar sözcüğüyle başlatılan goroutine, diğerleriyle aynı anda çalışan hafif bir fonksiyondur; kanallar (channels) ise goroutine'lerin birbirlerine değerleri güvenle aktarmasını sağlar. Bu, bir mutfaktaki aşçıların hepsi aynı rafa saldırmak yerine bitmiş yemekleri servis penceresinden iletmesine benzer. Bu özellik Go'yu bulut altyapısında, ağ servislerinde, mikro servislerde ve Docker ile Kubernetes gibi yaygın konteyner araçları dahil komut satırı araçlarında popüler kılar.

Goroutine, bir işletim sistemi iş parçacığı (thread) ile aynı şey değildir. Go çalışma zamanı, çok sayıda goroutine'i daha küçük bir işletim sistemi iş parçacığı havuzunda zamanlar; bu yüzden bir goroutine yalnızca birkaç kilobayt yığınla başlar ve bir program yüz binlercesini çalıştırabilir. İşletim sistemi iş parçacıklarını oluşturmak ve aralarında geçiş yapmak daha ağırdır; Go programlarının mütevazı kaynaklarla çok sayıda eşzamanlı bağlantıyı yönetebilmesinin nedeni budur.

Önemli noktalar

  • Go, kurulması gereken ayrı bir çalışma ortamı olmadan tek bir yerel çalıştırılabilir dosyaya derlenir.
  • Statik tiplidir ve çöp toplamalıdır; özellik kümesi bilinçli olarak küçüktür.
  • Goroutine'ler ve kanallar eşzamanlı programları yazmayı kolaylaştırır.
  • Hatalar istisna olarak fırlatılmaz, değer olarak döndürülür.
  • Bulut servislerinde, ağ araçlarında ve komut satırı programlarında popülerdir.

Örnek

Sonuçları bir kanal üzerinden gönderen goroutine'lergo
package main

import "fmt"

func main() {
    results := make(chan string)
    for i := 1; i <= 3; i++ {
        // Each goroutine runs concurrently and sends a message
        go func(id int) { results <- fmt.Sprintf("worker %d done", id) }(i)
    }
    for i := 0; i < 3; i++ {
        fmt.Println(<-results) // Receive one message from the channel
    }
}

Sık sorulan sorular

Go neden Golang diye de anılır?

Dilin resmî adı Go'dur, ancak ilk web sitesi golang.org idi ve "golang" ifadesi, yaygın bir sözcük olan "go"dan çok daha kolay aranır. İki ad da aynı dili ifade eder.

Go'da sınıflar var mı?

Hayır. Go, veriyi gruplamak için struct kullanır ve tanımladığınız herhangi bir tipe metot eklemenize izin verir; sınıf kalıtımı yerine arayüzlere ve bileşime dayanır.

Go çöp toplamalı mı?

Evet. Go, kısa duraklamalar için tasarlanmış eşzamanlı bir çöp toplayıcıya sahiptir; bu yüzden geliştiriciler belleği elle serbest bırakmaz, ancak ayırmaları azaltmak için yine de işaretçileri ve değer tiplerini kullanabilir.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar