Go (Golang) Kullanımı
Genel Bakış
Go (genellikle Golang olarak anılır), Google tarafından tasarlanıp açık kaynak olarak sunulan, statik tipli ve derlemeli bir programlama dilidir. Basit sözdizimi, son derece hızlı derleme hızı, üstün eşzamanlılık yeteneği (hafif goroutine yapısı ve iletişim için channel mekanizması) ve dahili çöp toplama sistemiyle geliştiricilerin favorisi olmuştur. Go, yüksek performanslı ağ servisleri, dağıtık sistemler, mikroservisler ve komut satırı araçları oluşturmakta oldukça iyidir ve günümüz bulut tabanlı uygulamalar ile backend geliştirmede ana tercihlerden biri hâline gelmiştir.
ServBay’in Go Desteği
ServBay, macOS ve Windows için entegre bir yerel web geliştirme ortamı olarak Go geliştiricilere sorunsuz ve güçlü bir destek sağlar. ServBay sayesinde Go’nun farklı sürümlerini kolayca kurabilir, yönetebilir ve aralarında hızlıca geçiş yapabilirsiniz. Geliştirme ortamı için karmaşık değişkenler (GOROOT, GOPATH gibi) manuel ayarlamaya ihtiyaç duymadan Go ortamını hızlıca kurup sürdürmenizi sağlar.
ServBay, eksiksiz Go araç zincirini dahili olarak sunar ve şu sürümleri, geçmişten en yeni kararlı sürüme kadar kapsar; böylece farklı projelerinize özel gereksinimleri kolayca karşılayabilirsiniz:
- Go 1.11
- Go 1.12
- Go 1.13
- Go 1.14
- Go 1.15
- Go 1.16
- Go 1.17
- Go 1.18
- Go 1.19
- Go 1.20
- Go 1.21
- Go 1.22
- Go 1.23
- Go 1.24 (ve ServBay’in sonraki güncellemelerinde eklenecek yeniler)
Go Modules Desteği
ServBay ortamında varsayılan olarak Go Modules ile bağımlılık yönetimi aktif ve önerilmektedir. Bu çözüm, Go’nun 1.11 sürümünden beri resmi standarttır. ServBay’in terminal ortamında go mod komutlarını (go mod init, go get, go mod tidy gibi) doğrudan kullanabilir, eski $GOPATH ayarlarını düşünmenize gerek kalmaz.
Ön Koşullar
- macOS üzerinde ServBay’i başarıyla kurup çalıştırmanız gereklidir.
- Temel Go programlama bilgisine sahip olmalısınız.
- Terminalde temel komut satırı kullanımına aşina olmalısınız.
Go Kurulumu
ServBay’in kullanıcı dostu grafik arayüzü (GUI) ile Go kurmak oldukça kolaydır:
- ServBay uygulamasını başlatın.
- Sol menüde
Paketlerbölümüne tıklayın. - Açılan listeden
Gokategorisini bulun. Gobaşlığına tıklayın, ServBay’de mevcut tüm Go sürümlerini göreceksiniz.- İstediğiniz Go sürümünü seçin (genellikle son kararlı sürüm olan Go 1.24 önerilir). İlgili sürümün yanında bulunan
Kurdüğmesine tıklayın. - ServBay otomatik olarak seçtiğiniz Go sürümünü indirip kuracaktır. Kurulum süresi internet hızınıza bağlıdır.

Kurulum tamamlanınca, ilgili sürümün durumu “Kurulu” olarak görünür. Dilerseniz farklı Go sürümlerini de kurup aralarında geçiş yapabilirsiniz.
Go Kullanımı
Go kurulduktan sonra, terminalde doğrudan go komutlarını kullanabilirsiniz.
Go’nun doğru kurulup etkinleştirildiğini ve hangi sürümün aktif olduğunu doğrulamak için şunu çalıştırın:
bash
go version1
Terminalde örneğin aşağıdakine benzer bir çıktı göreceksiniz, bu ServBay ile yönetilen Go sürümünüzü gösterir:
go version go1.24.1 darwin/arm641
Basit Bir Go Web Uygulaması Oluşturmak ve Çalıştırmak
Şimdi, ServBay ortamında temel bir Go HTTP sunucusu oluşturup çalıştıracağız.
Proje Dizini Oluşturun: Go projeniz için ServBay’in varsayılan web kök dizini olan
/Applications/ServBay/wwwaltında bir klasör oluşturmanızı öneririz. Örneğin,go-servbay-demoadlı bir klasör oluşturalım.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo1
2
3Go Modules Başlatın: Proje kök dizininde (
go-servbay-demo),go mod initile Go Modules başlatın. Modül yolu olarak genellikle proje veya kod deposuna özel bir tanımlayıcı kullanılır, örnekte klasör adını kullanıyoruz.bashgo mod init go-servbay-demo1Bu komut, projeye ait bağımlılıkları takip etmek için bir
go.moddosyası oluşturacaktır.Go Kodunu Yazın:
main.goadında bir kaynak dosyası oluşturun ve aşağıdaki kodu ekleyin:gopackage main import ( "fmt" "log" "net/http" "os" ) func handler(w http.ResponseWriter, r *http.Request) { hostname, _ := os.Hostname() fmt.Fprintf(w, "Hello from Go on ServBay!\nHostname: %s\nPath: %s\n", hostname, r.URL.Path) } func main() { http.HandleFunc("/", handler) port := "8080" // Sunucunun dinleyeceği portu tanımla log.Printf("Go web sunucusu %s portunda başlatılıyor...", port) log.Printf("Şuradan erişebilirsiniz: http://localhost:%s", port) // HTTP sunucusunu başlat err := http.ListenAndServe(":"+port, nil) if err != nil { log.Fatalf("Sunucu başlatılırken hata oluştu: %s\n", err) } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27Bu kod, 8080 portunda dinleyen basit bir HTTP sunucusu tanımlar. Her istek için, “Hello from Go on ServBay!”, geçerli ana bilgisayar adı ve istek yolu cevap olarak döner.
Go Uygulamasını Çalıştırın: Hâlâ ServBay terminalinde proje dizinindeyseniz (
/Applications/ServBay/www/go-servbay-demo), Go programınızı derleyip çalıştırmak için:bashgo run main.go1Başarılıysa terminalde aşağıdaki gibi log göreceksiniz ve sunucu çalışmaya başlar:
2024/05/20 15:00:00 Go web sunucusu 8080 portunda başlatılıyor... 2024/05/20 15:00:00 Şuradan erişebilirsiniz: http://localhost:80801
2Uygulamayı Tarayıcıda Görüntüleyin: Web tarayıcınızdan
http://localhost:8080adresine gidin. “Hello from Go on ServBay! Hostname: your-mac-hostname Path: /” benzeri bir yanıt göreceksiniz.
ServBay Sitesiyle Reverse Proxy Yapılandırması (Şiddetle Tavsiye Edilir)
Uygulamayı doğrudan localhost:8080 ile test edebilirsiniz; fakat yerel geliştirmede, hatırlaması kolay bir alan adı (örn. go-app.servbay.demo) ve ServBay’in web sunucusunu (Caddy, Apache veya Nginx) reverse proxy olarak kullanmak önerilir. Böylece Go uygulamanıza gerçek bir sistemdeki gibi standart HTTP/HTTPS portlarından erişir, ServBay’in avantajlarını (otomatik HTTPS, hizmet entegrasyonu vs.) kullanırsınız.
- ServBay’de Site Oluşturun:
- ServBay GUI’de,
Sitelerbölümüne gidin. Site Eklebutonuna tıklayın.- Alan adı: Örneğin
go-app.servbay.demo. - Site türü: Reverse proxy seçin.
- IP adresi:
127.0.0.1girin. - Port:
8080girin.
- ServBay GUI’de,

Kaydedip Sunucu Konfigürasyonunu Yenileyin: ServBay GUI’de siteyi kaydedin ve ilgili web sunucusunu (Caddy ya da Nginx) yeniden yükleyin veya başlatın ki değişiklikler uygulansın.
Uygulamaya Alan Adı ile Erişin: Artık web tarayıcınızda
https://go-app.servbay.demoadresinden Go web uygulamanıza erişebilirsiniz. ServBay web sunucusu, gelen istekleri otomatik şekilde Go uygulamanıza yönlendirecektir.

Go Sürümlerinin Yönetimi
ServBay ile farklı Go sürümlerini yönetmek ve geçiş yapmak son derece kolaydır.
- Sürüm değişimi: ServBay GUI’de
Paketler->Gomenüsünde kurulu tüm Go sürümlerini göreceksiniz. Sol menüdekiAyarlarkısmından istediğiniz Go sürümünü varsayılan olarak seçebilirsiniz. - Geçişi doğrulama: Değişimden sonra terminali yeniden açıp
go versionile etkin sürümü kontrol edin.
Proje Bazında Go Sürümü Yönetimi İçin .servbay.config Kullanımı
Sistem genelinde Go sürümünü değiştirmek dışında, ServBay ile proje tabanlı bir sürüm kontrolü de mümkündür; bunun için proje kökünde .servbay.config dosyası oluşturabilirsiniz.
Nasıl Çalışır?
ServBay terminalinde, .servbay.config dosyası olan bir klasöre cd ile girdiğinizde, ServBay bu dosyayı otomatik algılar ve okur. Eğer dosyada GO_VERSION tanımlıysa, ilgili terminal oturumunda Go komutları otomatik olarak seçilen sürümü kullanır.
Konfigürasyon Dosya Formatı:
.servbay.config basit bir metin dosyasıdır, anahtar-değer çiftleri içerir. Proje için Go sürümünü belirtmek için aşağıdaki örnekteki gibi ayarlanabilir:
ini
# .servbay.config dosyası örneği
# Bu proje için Go 1.22 kullanılacak
GO_VERSION=1.22
# Aynı dosyada diğer geliştirme araçlarının sürümleri de seçilebilir
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... diğer olası ayarlar ...
# GOPROXY=https://goproxy.cn,direct1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Avantajları:
- Otomatik sürüm geçişi: Her defasında sistem genelini değiştirmeye gerek kalmaz, proje klasörüne girildiğinde ilgili Go sürümü otomatik seçilir.
- Proje izolasyonu: Her projenin beklediği Go ortamında derlenip çalıştırılmasını, sürüm çatışmalarını engeller.
- Ekip uyumu:
.servbay.configdosyasını Git gibi bir sistemle paylaşırsanız, ekip arkadaşlarınız da projeyi klonladıklarında aynı Go ortamını anında kullanır.
Kullanım Senaryosu:
Varsayalım iki projeniz var:
project-aGo 1.12 gerektiriyorproject-ben yeni Go 1.22’yi kullanıyor
Her projenin kökünde bir .servbay.config dosyası oluşturabilirsiniz:
/Applications/ServBay/www/project-a/.servbay.config:iniGO_VERSION=1.121/Applications/ServBay/www/project-b/.servbay.config:iniGO_VERSION=1.221
ServBay terminalinde cd /Applications/ServBay/www/project-a der ve go version komutunu çalıştırırsanız Go 1.12.x görürsünüz. cd /Applications/ServBay/www/project-b ile ise Go 1.22.x etkin olur.

Not: .servbay.config sadece ServBay ortamındaki temel Go sürümünü belirler. Proje bağımlılık yönetimi için yine Go Modules (go.mod dosyası) kullanılması tavsiye edilir.
Sıkça Sorulan Sorular (SSS)
S: ServBay terminalinde
gokomutu “command not found” hatası veriyor, ne yapmalıyım?C: Öncelikle, terminalinizin ServBay’in PATH ortam değişkenini içerdiğini kontrol edin. Ardından GUI’de,
Paketler->Gobölümünden en az bir Go sürümünün kurulduğunu ve birinin varsayılan olarak seçildiğini doğrulayın.S: ServBay’de Go’yu en güncel sürüme nasıl yükseltirim?
C: ServBay’in
Paketler->Gobölümünü düzenli kontrol edin. Eğer yeni bir Go sürümü destekleniyorsa, listede çıkar ve rahatça kurabilirsiniz. Kurduktan sonra, GUI ile bu sürüme geçebilirsiniz.S: Go Modules ile çalışırken ağ sorunu yaşıyorum veya bağımlılıkları indirmek yavaş, ne yapmalıyım?
C: Go Modules varsayılan olarak
proxy.golang.orgüzerinden bağımlılık indirir. Çin anakarası veya erişimin kısıtlı olduğu bölgelerde bağlantı sorunları olabilir. GOPROXY ortam değişkenini ayarlayarakhttps://goproxy.cnveyahttps://goproxy.iogibi hızlı proxy’leri kullanın. ServBay ayarlarında veya.servbay.configiçinde (GOPROXY=https://goproxy.cn,direct) bu değeri tanımlayabilirsiniz.S: Go web uygulamam başlatılırken “address already in use” (port meşgul) hatası alıyorum, ne yapmalıyım?
C: Bu hata, kodda seçtiğiniz portun (örneğin 8080) sistemde başka bir işlem tarafından kullanıldığını gösterir. İki yolunuz var: ya Go kodunuzda farklı, boş bir port kullanırsınız (örn. 8081, 9000), ya da o portu kullanan işlemi sonlandırırsınız. macOS’ta,
lsof -i :<port_numarası>(örn.lsof -i :8080) ile portu kullanan PID’yi bulupkill <PID>ile sonlandırabilirsiniz.S:
.servbay.configdosyasıyla Go sürümünü değiştirmek ve sistem genelinde sürüm değiştirmek arasında fark nedir? Hangisini kullanmalıyım?C: Sistem genelinde geçiş (GUI’den yapılır) tüm ortamda varsayılan Go sürümünü değiştirir.
.servbay.configise, sadece ilgili klasöre girince terminal oturumunda geçici olarak Go sürümünü değiştirir. Projelerinizde tercihen.servbay.configkullanarak sürüm ihtiyacını yönetin - böylece izolasyon ve tekrarlanabilirlik elde edersiniz, özellikle farklı Go sürümleri isteyen birçok projeyle çalışırken. Sistem geneli ise sık kullandığınız ana Go sürümü için uygundur.
Özet
ServBay, macOS üzerinde Go (Golang) geliştiren mühendisler için son derece verimli ve kullanıcı dostu bir yerel geliştirme ortamı sunar. Kolay arayüzüyle birden çok Go sürümünü hızlıca kurup yönetebilir, .servbay.config ile proje bazında sürüm kontrolü sağlayabilirsiniz. Go Modules ile bağımlılıkları yönetip ServBay’in dahili web sunucusu ile reverse proxy ve uygulama barındırma işlemlerini kolayca gerçekleştirebilir, Go uygulamalarınızı hızlıca kurup test edebilirsiniz. ServBay, karmaşık ortam yapılandırmalarını ortadan kaldırarak, Go koduna ve inovasyonunuza daha fazla odaklanmanızı sağlar.
