Go (Golang) Kullanımı
Genel Bakış
Go (sıklıkla Golang olarak da bilinir), Google tarafından tasarlanmış ve açık kaynak olarak sunulan, statik tipli, derlemeli bir programlama dilidir. Sade sözdizimi, son derece hızlı derleme süresi, hafif goroutine'lar ve iletişim için kullanılan channel yapısıyla mükemmel eşzamanlılık yetenekleri, ayrıca verimli yerleşik çöp toplama özellikleriyle geliştiriciler arasında oldukça popülerdir. Go dili; yüksek performanslı ağ servisleri, dağıtık sistemler, mikroservisler ve komut satırı araçları geliştirmek için idealdir ve modern bulut tabanlı uygulamalar ile backend geliştirme alanında başlıca tercihlerden biri olmuştur.
ServBay'in Go Desteği
ServBay, özellikle macOS için tasarlanmış entegre bir yerel Web geliştirme ortamı olarak, Go geliştiricilerine kusursuz ve güçlü bir destek sağlar. ServBay sayesinde birçok Go sürümünü son derece kolay bir şekilde kurabilir, yönetebilir ve sürümler arasında geçiş yapabilirsiniz. Komplike ortam değişkenlerini (ör. GOROOT, GOPATH) elle ayarlamanıza gerek kalmaz; Go geliştirme ortamınızın kurulumu ve bakımı önemli ölçüde kolaylaşır.
ServBay, eksiksiz bir Go araç zinciriyle birlikte gelir ve geçmişten en güncel sürümlere kadar çok sayıda Go sürümünü destekler. Böylece farklı projeleriniz için özel gereksinimleri rahatça 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 gelecek güncellemelerinde desteklenecek daha yeni sürümler)
Go Modules Desteği
ServBay ortamı varsayılan olarak ve şiddetle Go Modules ile bağımlılık yönetimini destekler ve tavsiye eder. Go resmi olarak 1.11 sürümünden itibaren Go Modules kullanımını öneriyor. ServBay’in terminal ortamında, doğrudan go mod ile ilgili komutları (go mod init, go get, go mod tidy gibi) kullanabilir ve geleneksel $GOPATH konfigürasyonu ile ilgili hiçbir endişe yaşamazsınız.
Ön Koşullar
- ServBay’i macOS üzerinde başarıyla kurup çalıştırmış olmalısınız.
- Go programlama dili ile ilgili temel bilgilere sahip olmalısınız.
- Terminalde (Komut Satırı) temel komutlarla çalışmaya aşina olmalısınız.
Go Kurulumu
ServBay’in kullanıcı dostu grafik arayüzü (GUI) sayesinde Go geliştirme ortamı kurmak oldukça kolaydır:
- ServBay uygulamasını başlatın.
- Sol navigasyon menüsünden
Paketlersekmesini seçin. - Açılan paketler listesinden
Gokategorisini bulun. Gobaşlığını açarak ServBay’in desteklediği Go sürümlerini görebilirsiniz.- İhtiyacınız olan Go sürümünü seçin (genellikle son kararlı sürüm, örneğin Go 1.24, önerilir). İstediğiniz sürümün yanındaki
Yüklebutonuna tıklayın. - Seçtiğiniz Go sürümü, ServBay tarafından otomatik olarak indirilecek ve kurulacaktır. Kurulum süresi internet hızınıza bağlıdır.

Kurulum bittiğinde ilgili Go sürümünün durumu "yüklendi" olarak değişir ve dilediğiniz gibi farklı sürümleri ekleyip aralarında kolayca geçiş yapabilirsiniz.
Go’nun Kullanımı
Go kurulumunu tamamladıktan sonra, işletim sistemi terminalinde doğrudan go komut setini kullanabilirsiniz.
Go’nun başarıyla kurulup kurulmadığını ve etkin olan sürümü kontrol etmek için şu komutu kullanın:
go versionTerminalde aşağıdaki gibi bir çıktı görmelisiniz; bu, halihazırda ServBay tarafından yönetilen Go sürümünüzü gösterir:
go version go1.24.1 darwin/arm64Basit Bir Go Web Uygulaması Derleme ve Çalıştırma
Şimdi temel bir Go HTTP sunucusu örneği oluşturup, ServBay ortamında derleyip çalıştıracağız.
Proje Dizini Oluşturma: Go projeniz için, ServBay’in varsayılan web kök dizini olan
/Applications/ServBay/wwwaltında yeni bir klasör oluşturmanız tavsiye edilir. Örnek olarak,go-servbay-demoadında bir klasör oluşturalım.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo1
2
3Go Modules’u Başlatma: Proje kök dizinindeyken (
go-servbay-demo), Go Modules'u başlatmak içingo mod initkomutunu girin. Modül yolu olarak genellikle kod deposuna ya da projeye özgü benzersiz bir tanımlayıcı önerilir; burada örnek olarak dizin adını kullanıyoruz.bashgo mod init go-servbay-demo1Bu komut, mevcut dizinde
go.modadlı bir dosya oluşturarak bağımlılıkları takip edecektir.Go Kodunu Yazma:
main.goadında bir kaynak dosyası oluşturup aşağıdaki kodu yapıştırın: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ımlayın log.Printf("Go web sunucusu %s portunda başlatılıyor...", port) log.Printf("Şu adresten erişebilirsiniz: http://localhost:%s", port) // HTTP sunucusunu başlatın 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 parçası, yerel 8080 portunu dinleyen basit bir HTTP sunucusu tanımlar. Tüm gelen isteklere, "Hello from Go on ServBay!" metni, hostname ve istek yolu ile yanıt verir.
Go Uygulamasını Çalıştırma: ServBay terminalinde, proje dizinindeyken (
/Applications/ServBay/www/go-servbay-demo), Go uygulamanızı derleyip çalıştırmak için şu komutu girin:bashgo run main.go1Eğer her şey doğruysa, terminalde aşağıdaki gibi bir log çıkışı göreceksiniz; bu, sunucunun başarıyla başladığını gösterir:
2024/05/20 15:00:00 Go web sunucusu 8080 portunda başlatılıyor... 2024/05/20 15:00:00 Şu adresten erişebilirsiniz: http://localhost:80801
2Uygulamaya Erişim: Web tarayıcınızı açıp
http://localhost:8080adresine gidin. "Hello from Go on ServBay! Hostname: your-mac-hostname Path: /" benzeri bir yanıt göreceksiniz.
ServBay Sitesi ile Ters Proxy (Şiddetle Önerilir)
Doğrudan localhost:8080 ile erişim mümkün olsa da, yerel geliştirmede daha anlaşılır bir alan adı (ör. go-app.servbay.demo) ve ServBay’in Web sunucuları (Caddy, Apache veya Nginx) üzerinden ters proxy kullanmak genellikle daha iyi bir seçenektir. Böylece Go uygulamanıza üretim ortamı benzeri bir HTTP/HTTPS portundan ulaşabilir ve ServBay’in sağladığı ek imkanlardan (otomatik HTTPS, diğer servislerle entegrasyon vb.) yararlanabilirsiniz.
- ServBay’de Web Sitesi Oluşturun:
- ServBay GUI’yi açıp
Sitelerbölümüne gidin. Site Ekledüğmesine tıklayın.- Alan Adı: Yerel geliştirme için kullanmak istediğiniz alan adını girin, ör.
go-app.servbay.demo. - Site Türü: Ters proxy seçin.
- IP Adresi:
127.0.0.1girin. - Port:
8080girin.
- ServBay GUI’yi açıp

Ayarları Kaydedin ve Yeniden Yükleyin: ServBay GUI’de yaptığınız site yapılandırmasını kaydedin ve ilgili Web sunucusunu (Caddy veya Nginx) yeniden başlatın ya da yapılandırmayı yeniden yükleyin.
Alan Adıyla Uygulamaya Erişim: Artık tarayıcıda
https://go-app.servbay.demoadresine giderek Go Web uygulamanıza erişebilirsiniz. ServBay’in Web sunucusu gelen talepleri şeffaf şekilde Go programınıza iletecektir.

Go Sürümlerini Yönetme
ServBay, farklı Go sürümlerini yönetmeyi ve aralarında geçiş yapmayı son derece kolaylaştırır.
- Sürüm Değiştirme: ServBay GUI’nin
Paketler->Gokısmında yüklü tüm Go sürümlerini görebilirsiniz. Sol menüdenAyarları açarak herhangi bir Go sürümünü varsayılan olarak atayabilirsiniz. - Değişikliği Doğrulama: Geçiş sonrası yeni bir terminal açıp
go versionkomutunu girerek aktif sürümün istediğiniz gibi değişip değişmediğini kontrol edebilirsiniz.
Proje Bazında Go Versiyonu için .servbay.config Kullanımı
Sadece sistem genelinde Go sürümünü değiştirmekle kalmayıp, ServBay ile proje bazında Go sürümünü de kolayca yönetebilirsiniz. Bunu, proje kök dizinine .servbay.config adında bir dosya ekleyerek sağlayabilirsiniz.
Nasıl Çalışır?
ServBay’in entegre terminali ile .servbay.config içeren bir dizine girdiğinizde, yazılım bu dosyayı otomatik olarak tespit edip okur. Buradaki (ör. GO_VERSION) ayara göre mevcut terminal oturumuna geçici olarak uygun Go sürümünü atar.
Yapılandırma Dosyası Formatı:
.servbay.config, anahtar-değer biçiminde basit bir metin dosyasıdır. Projeye özel bir Go sürümü atamak için sadece GO_VERSION satırını eklemeniz yeterlidir:
# .servbay.config dosyası örneği
# Bu projenin Go 1.22 sürümüyle çalışacağını belirtir
GO_VERSION=1.22
# Aynı anda başka araçların sürümleri de belirtilebilir
# PHP_VERSION=8.3
# NODE_VERSION=20
# PYTHON_VERSION=3.11
# ... Diğer olası ayarlar ...
# GOPROXY=https://goproxy.cn,direct2
3
4
5
6
7
8
9
10
Avantajları:
- Otomatik Sürüm Geçişi: Tüm sistemde sürüm değiştirmek derdi olmadan, sadece proje dizinine girerek uygun Go sürümüyle çalışırsınız.
- Proje İzolasyonu: Her projenin beklenen Go ortamında derlenip çalıştırılmasını garanti ederek olası sürüm çatışmalarını önler.
- Ekip Çalışması:
.servbay.configdosyasını Git gibi sürüm kontrol sistemine dahil edip herkesin aynı temel Go ortamıyla başlamasını sağlayabilirsiniz.
Kullanım Senaryosu:
İki farklı projeniz olduğunu varsayalım:
project-aGo 1.12 gerektiriyorproject-bise en güncel Go 1.22 kullanıyor
Her bir projenin kök dizininde aşağıdaki .servbay.config dosyasını bulundurabilirsiniz:
/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 yaptıktan sonra go version komutunu verdiğinizde Go 1.12.x olmalı; benzer şekilde cd /Applications/ServBay/www/project-b için Go 1.22.x çalışacaktır.

Not: .servbay.config esas olarak ServBay ortamının temel Go sürümünü etkiler. Proje bağımlılıklarının yönetimi için yine Go Modules (go.mod dosyası) kullanılması şiddetle tavsiye edilir.
Sıkça Sorulan Sorular (SSS)
S: ServBay terminalinde
gokomutunu verdiğimde "command not found" uyarısı çıkıyor, ne yapmalıyım?C: Öncelikle, terminalinizde ServBay’in PATH ortam değişkeninin doğru şekilde ayarlandığından emin olun. Ayrıca, ServBay GUI’de
Paketler->Gokısmında en az bir Go sürümünü başarıyla yükleyip varsayılan olarak seçtiğinizden emin olun.S: ServBay’de Go’yu en son sürüme nasıl güncellerim?
C: ServBay’in
Paketler->Gobölümünü düzenli olarak kontrol edin. Eğer yeni bir Go sürümü destekleniyorsa, listede görünecektir ve yüklemeniz yeterlidir. Kurulumdan sonra GUI üzerinden istediğiniz sürüme geçiş yapabilirsiniz.S: Go Modules ile çalışırken ağdan bağımlılık indiremediğim ya da indirme yavaş olduğu sorunlarını nasıl aşarım?
C: Go Modules varsayılan olarak
proxy.golang.orgsunucusunu kullanır. Çin anakarası veya internet kısıtlamalarının olduğu başka bir bölgede takılma yaşayabilirsiniz. GOPROXY ortam değişkenini yapılandırarak hızlı yansılar (ör.https://goproxy.cnveyahttps://goproxy.io) kullanabilirsiniz. Bunu ServBay’in genel ayarlarından veya.servbay.configdosyası içine (GOPROXY=https://goproxy.cn,direct) ekleyerek yapabilirsiniz.S: Go Web uygulamam başlatılırken port kullanımda (address already in use) hatası alıyorum, sebebi nedir?
C: Bu hata, uygulamanızda tanımlı portun (ör. 8080) başka bir işlem tarafından kullanılmakta olduğunu gösterir. İki yolunuz var: Ya Go kodunuzu farklı bir serbest port (ör. 8081, 9000 vb.) ile dinleyecek şekilde değiştirin, ya da mevcut portu kullanan işlemi bulun ve kapatın. macOS’ta,
lsof -i :<port_numarası>(ör.lsof -i :8080) ile portu kullanan işlemin PID’sini görebilir vekill <PID>ile o işlemi sonlandırabilirsiniz.S:
.servbay.configile proje bazında, GUI üzerinden ise tüm sistemde Go sürümü geçişi yapabiliyorum; aralarındaki fark nedir ve hangisini kullanmalıyım?C: GUI’den yapılan global geçiş, tüm sistemdeki varsayılan Go sürümünü değiştirir.
.servbay.configise sadece ilgili dizine girdiğinizde geçici olarak o terminal oturumunda Go sürümünü değiştirir. Proje bazlı ihtiyaçlarınız için.servbay.configdosyasıyla yönetim önerilir; böylece hem izole hem de tekrarlanabilir bir ortam elde edersiniz, farklı sürüm ihtiyacı olan projeleri aynı anda rahatça yürütebilirsiniz. Global değişim ise en çok kullandığınız Go sürümünü sistemde varsayılan yapmak içindir.
Sonuç
ServBay, macOS üzerinde Go (Golang) geliştiren mühendisler için son derece verimli ve kullanıcı dostu bir yerel geliştirme ortamı sunar. Basit arayüzü sayesinde birden çok Go sürümünü kolayca yükleyebilir, yönetebilir, .servbay.config ile ise projeye özel sürüm kontrolü sağlayabilirsiniz. Go Modules ile bağımlılık yönetimini zahmetsizce yürütür, ServBay’in bütünleşik Web sunucusu ile ters proxy ve uygulama barındırma özelliklerinden yararlanırsınız. Böylece Go uygulamalarınızı hızla kurabilir, çalıştırabilir ve test edebilirsiniz. ServBay, karmaşık ortam konfigürasyonu yükünü ortadan kaldırır ve Go kodunuz üzerine daha fazla odaklanmanıza fırsat tanır.
