Go, aynı zamanda Golang olarak da bilinir, Google tarafından tasarlanmış statik tipli, derlenen bir programlama dilidir. Yazılım geliştirmeyi basitleştirmek ve programlama verimliliğini artırmak amacıyla, özellikle büyük ölçekli dağıtık sistemler için oluşturulmuştur. Go, temiz ve minimal bir sözdizimi, verimli performans ve yerleşik eşzamanlılık desteği sunarak, bulut hizmetleri, mikro hizmetler ve ağ uygulamaları üzerinde çalışan geliştiriciler için çekici bir seçenek haline gelmiştir.
Go, 2007 yılında Google'da Robert Griesemer, Rob Pike ve Ken Thompson tarafından geliştirilmiştir. Dil, geliştiricilerin C++ ve Java gibi mevcut dillerle karşılaştıkları performans, bağımlılık yönetimi ve derleme süresi gibi zorluklara yanıt olarak oluşturulmuştur. Tasarımcılar, basitlik, verimlilik ve ifade gücüne vurgu yapmışlardır.
Go, Kasım 2009'da halka duyurulmuştur. Erken sürümleri, temiz sözdizimi ve eşzamanlılık konusundaki odakları sayesinde hızla ilgi görmüştür; bu özellikler, büyük ekipler ve karmaşık projeler üzerinde çalışan geliştiriciler için cazip olmuştur. Ayrıca, HTTP, JSON ve dosya girişi/çıkışı gibi işlemleri gerçekleştiren paketleri içeren sağlam standart kütüphanesi, dilin benimsenmesini daha da artırmıştır.
Ekim 2023 itibarıyla, Go güçlü bir ekosistem geliştirmiştir; canlı bir topluluk ve çeşitli kütüphaneler ile çerçeveler mevcuttur. Bulut yerel uygulamaların geliştirilmesinde yaygın olarak kullanılmakta ve Google, Dropbox ve Netflix gibi büyük teknoloji firmaları tarafından benimsenmiştir. Dil, performansı artıran, yeni özellikler sunan ve geliştirici deneyimini iyileştiren düzenli güncellemelerle evrimini sürdürmektedir.
Go, güçlü statik tipleme kullanır; bu, değişken türlerinin derleme zamanında bilindiği anlamına gelir. Bu özellik, program çalışmadan önce birçok hatayı yakalamaya yardımcı olur.
var x int = 10
Go, goroutine'ler aracılığıyla yerleşik eşzamanlılık desteği sunar; goroutine'ler, Go çalışma zamanı tarafından yönetilen hafif iş parçacıklarıdır. Bu, eşzamanlı programlar yazmayı kolaylaştırır.
go func() {
fmt.Println("Goroutine'den merhaba!")
}()
Go'da kanallar, goroutine'ler arasında güvenli bir şekilde iletişim kurmak için kullanılır. Bir goroutine'in diğerine veri göndermesi için bir yol sağlar.
ch := make(chan int)
go func() {
ch <- 42
}()
value := <-ch
Go, geliştiricilerin modüler ve yeniden kullanılabilir kod oluşturmasına olanak tanıyan yapı ve arayüz gibi bileşik türleri destekler.
type Person struct {
Name string
Age int
}
Go'daki switch ifadeleri çok yönlüdür ve dizeler, tam sayılar ve hatta türler gibi çeşitli türler üzerinde çalışabilir.
switch x := 2; x {
case 1:
fmt.Println("Bir")
case 2:
fmt.Println("İki")
default:
fmt.Println("Diğer")
}
Go, kodun yeniden kullanımını teşvik etmek ve daha karmaşık veri türleri oluşturmak için türlerin gömülmesine izin verir.
type Employee struct {
Person // Person yapısını gömme
Salary int
}
Go'daki defer ifadeleri, bir işlev çağrısının program yürütmesinin ilerleyen bir aşamasında gerçekleştirilmesini sağlamak için kullanılır; genellikle temizlik için kullanılır.
func main() {
defer fmt.Println("Temizlik yap!")
fmt.Println("Merhaba")
}
Go'nun hata yönetimi yaklaşımı, işlevlerin hem bir sonuç hem de bir hata döndürmesine olanak tanıyan çoklu dönüş değerleri kullanır.
result, err := divide(10, 2)
if err != nil {
fmt.Println("Hata:", err)
} else {
fmt.Println("Sonuç:", result)
}
Dilimler, dizilerle çalışmanın esnek bir yolunu sağlar ve sabit uzunlukta dizilerden daha güçlüdür.
s := []int{1, 2, 3}
s = append(s, 4) // Append yerleşik bir işlevdir
Go'nun paket sistemi, kod organizasyonu ve modülerliği destekler; kodun projeler arasında yeniden kullanılabilir paketlere bölünmesine olanak tanır.
package main
import "fmt"
Go programları genellikle Go derleyicisi (gc
) kullanılarak makine koduna derlenir. Go çalışma zamanı, bellek yönetimi, goroutine'lerin zamanlaması ve çöp toplama işlemlerinden sorumludur.
Go geliştirmeyi destekleyen birkaç Entegre Geliştirme Ortamı (IDE) ve metin editörü bulunmaktadır:
Go projesi oluşturmak, Go araç zincirini kullanarak oldukça basittir. Yaygın komutlar şunlardır:
go build
: Paketleri ve bağımlılıkları derler.go run
: Go programını derler ve çalıştırır.go test
: Testleri çalıştırır.Projeler genellikle dizinlere organize edilir ve bağımlılık yönetimi için bir go.mod
dosyası bulunur.
Go, özellikle bulut bilişim, ağ ve mikro hizmetler alanında çeşitli uygulamalarda yaygın olarak kullanılmaktadır. Yaygın uygulamalar şunlardır:
Go, benzersiz özellikleri nedeniyle diğer dillerle sıkça karşılaştırılmaktadır.
Go'dan veya Go'ya kod çevirirken aşağıdaki ipuçlarını göz önünde bulundurun:
Go'ya özgü sınırlı sayıda kaynak-kaynağa çeviri aracı olmasına rağmen, geçişte yardımcı olabilecek bazı araçlar şunlardır: