# Go (programlama dili)

Go|  |
| Paradigması | Derlenen, emirli, yapısal |
| İlk çıkışı | 10 Kasım 2009) (2009-11-10) |
| Tasarımcı | Ken Thompson Robert Griesemer, Rob Pike |
| Geliştirici | Google Inc. |
| Kararlı sürüm | 1.25.5
 (2 Aralık 2025) |
| Etkilendikleri | Alef, APL, BCPL, C, CSP, Limbo, Modula, Newsqueak, Oberon, occam, Pascal, Python, Smalltalk |
| Platformu | Linux, OS X, Windows, bazı BSD ve Unix versiyonları |
| İşletim sistemi | Çapraz platform |
| Lisans | BSD lisansı stili |
| Olağan dosya uzantıları | .go |
| Web sitesi | go.dev |

Go'nun önceki, Amerikan yer sincabı maskotlu logosu.
**Go**, statik tipli, derlenen, yüksek seviyeli bir programlama dilidir. Robert Griesemer, Rob Pike ve Ken Thompson tarafından Google'da 2007 yılından itibaren geliştirilmeye başlanmıştır. Sözdizimi C'ye benzerdir fakat hafıza erişimi güvenlidir, kullanılmayan hafıza kaynakları sisteme otomatik olarak geri verilir, `interface` veri tipleri sayesinde yapısal (özellik bazlı) tip sistemini (*structural type system*) destekler ve eşzamanlı (*concurrent*) çalışan iş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ık *golang* ismiyle anılır ama asıl adı Go'dur.

Go derleyicisi "gc" açık kaynaktır ve Linux, OS X, Windows, bazı BSD ve Unix versiyonları ve ayrıca 2015'ten itibaren akıllı telefonlar için geliştirilmiştir.

## Tarihçe

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.

Go, Google mühendisleri Robert Griesemer, Rob Pike ve Ken 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:

* Statik yazılmış, büyük sistemlere ölçeklenebilir olması (Java ve C++ gibi)
* Üretken ve okunabilir olması, çok fazla zorunlu anahtar kelime ve tekrarlamaların kullanılmaması
* Tümleşik geliştirme ortamına ihtiyaç duymaması ancak desteklemesi
* 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.

Go 1.0, Mart 2012'de yayınlanmıştır.

Go'nun şu anki güncel sürümü 13 Ağustos 2024'te yayınlanan Go 1.23'tür.

## Dil tasarımı

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 çok dinamik dillere benzemektedir:

* Değişken tanımındaki tür belirtimi isteğe bağlıdır. (`int x = 0;` yerine `x := 0;`).
* Hızlı derleme süresi.
* Uzak paket yöneticisi (`go get`) ve online paket dökümantasyonu.

* Belirli problemlere ayırt edici yaklaşımlar:

* Dahili eşzamanlılık ilkelleri: light-weight process'lar (goroutines), kanallar ve `select` ifadesi.
* Varsayılan olarak statik olarak bağlanmış native binary'ler, ekstra bağımlılıklara ihtiyaç duyulmadan üretilir.

### Söz dizimi

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ılara `i := 3` ya da `s := "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`).

## Örnek kullanım

Go ile Merhaba dünya programı

```
package main

import "fmt"

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

```

## Kaynakça

*Bu makale, Creative Commons Attribution 3.0 lisansına sahip resmi Go eğitselinden Let's Go1 Temmuz 2016 tarihinde Wayback Machine sitesinde arşivlendi. alıntılar içermektedir.*

## Dış bağlantılar

* Go Resmi Sitesi9 Temmuz 2011 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
* Go Türkiye Topluluğu5 Haziran 2016 tarihinde Wayback Machine sitesinde arşivlendi. (Türkçe)
* Go Turu1 Temmuz 2016 tarihinde Wayback Machine sitesinde arşivlendi. (Türkçe)
* YouTube'da The Go Programming Language (İngilizce)
* Mailing list / Newsgroup17 Kasım 2009 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
* /r/golang - Reddit Sayfası14 Kasım 2009 tarihinde Wayback Machine sitesinde arşivlendi. (İngilizce)
* Go Release History and Support End 27 Eylül 2022 tarihinde Wayback Machine sitesinde arşivlendi.