Go; statik tipler kullanan, derlenen yüksek seviyeli bir programlama dilidir. Google çalışanlarından Robert Griesemer, Rob Pike, ve Ken Thompson tarafından geliştirilmiştir.
Bir rivayete göre; google aramalarında go
çok jenerik kaldığı için; golang
olarak da isimlendirilmiştir. Go
ya da Golang
aslında aynı anlamda
kullanılmıştır.
Yazılım stili olarak (syntax) C
diline benzese bile, güvenli hafıza
yönetimi ve kullanımına, işi biten hafızanın geri bırakılmasına (garbage collection),
yapısal tiplerine ve kendine özgü CSP-style (concurrency) eş-zamanlılık
yapısına kadar çok büyük farklar ve avantajlar sağlar.
YouTube videosunda tüm go ekibini görebilirsiniz.
2007 yılında duyurulmuş, 2009 yılında da tüm dünyaya açılmıştır. Açık Kaynak (open source) şeklinde geliştirilmeye devam ediyor.
Dili geliştirenlerin şöyle bir sözü var;
The language is designed to build software services.
Yani dilin asıl amacı yazılım servisleri, hatta internet servisleri geliştirmek. Cloud Native tanımıyla örtüşüyor, yani cloud’ın dili: Go!
Ana presibleri;
- Basitlik
- Açıkça tanımlanmış talimatlar dizisi
- Statik tipler (tanımlı tipler)
- Üzerinde derlendiği işletim sisteminin doğal dili ne ise o dile derlenme, Bu sayede Java ve benzeri dillerdeki sanal makine (virtual machine) ihtiyacı yok
- Nesne yönelimli değil (oop) ama tipler birbir içine geçebiliyor, miras kavramı yok
- Interface mantığı
- Fonksiyonlar hem tip hem de argüman olarak kullanılabilir
- Orthogonality; yani bir fonksiyon ya da işlem başka bir şeyi bozmadan değişebiliyor
- Gömülü olarak gelen eşzamanlılık ilkelleri: Goroutines ve Channels
- Doküman ve test öncelikli yaklaşım