Go'nun önceki, Amerikan yer sincabı maskotlu logosu.
Go, statik tipli,derlenen, yüksek seviyeli birprogramlama dilidir. Robert Griesemer, Rob Pike veKen Thompson tarafındanGoogle'da 2007 yılından itibaren geliştirilmeye başlanmıştır.[5] SözdizimiC'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarakgeri verilir,interface veri tipleri sayesinde yapısal (özellik bazlı) tip sistemini (structural type system) destekler veeşzamanlı (concurrent) çalışanişlemlerin (process) ortak hafıza kullanabilmelerinin yanında birbiriyle iletişim kurmalarını (communicating sequential processes) sağlayan ögelere sahiptir. Eski alan adıgolang.org olduğundan sık sıkgolang ismiyle anılır ama asıl adı Go'dur.[6]
Go derleyicisi "gc"açık kaynaktır veLinux,OS X,Windows, bazıBSD veUnix versiyonları ve ayrıca 2015'ten itibaren akıllı telefonlar için geliştirilmiştir.
Dil, Kasım 2009'da duyurulmuştur. Google'ın bazı ürünlerinin sistemlerinde olduğu gibi diğer firmalar tarafından da kullanılmaktadır.[7]
Go, Google mühendisleri Robert Griesemer, Rob Pike veKen Thompson tarafından bir deney olarak ortaya çıkarılmış, diğer dillerin bilinen eleştirilerini çözecek ve olumlu özelliklerini koruyacak şekilde tasarlanmıştır. Yeni dil aşağıdaki özellikleri içermekteydi:[8]
Statik yazılmış, büyük sistemlere ölçeklenebilir olması (Java veC++ gibi)
Üretken ve okunabilir olması, çok fazla zorunlu anahtar kelime ve tekrarlamaların kullanılmaması[9]
Ağ (networking) ve çoklu işlemleri (multiprocessing) desteklemesi
Yapılan röportajlarda bu üç dil tasarımcısının yeni dili yapmalarındaki motivasyonun,C++'daki karmaşıklığı beğenmedikleri için geldiğini belirtmişlerdir.[10][11][12]
Go, C'nin bilinen özelliklerini taşımaktadır ancak yapılan değişiklikler dili basit, kısa ve güvenli hale getirmiştir. Aşağıda Go'yu kısaca tanımlayan özellikler yer almaktadır:
Söz dizimi ve çevresel kalıpları benimsemesi daha çokdinamik dillere benzemektedir:[15]
Değişken tanımındaki tür belirtimi isteğe bağlıdır. (int x = 0; yerinex := 0;).
Go'nun söz dizimi, C'den yapılan değişiklikleri içerir, kodu kısa ve okunabilir kılmayı amaçlar. Birleştirilmiş declaration ve başlatma operatörü, programcılarai := 3 ya das := "bazı kelimeler" yazarak, herhangi bir tür belirtimine ihtiyaç duyulmadan değişken tanımlamasını sağlar. Noktalı virgüller hala ifadeleri sonlandırır fakat satır sonlarında kullanılmasına gerek yoktur. Fonksiyonlar birden fazla değerler döndürebilir (return result, err).
Bu makale, Creative Commons Attribution 3.0 lisansına sahip resmi Go eğitselindenLet's Go1 Temmuz 2016 tarihindeWayback Machine sitesindearşivlendi. alıntılar içermektedir.