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
Paketler
sekmesini seçin. - Açılan paketler listesinden
Go
kategorisini bulun. Go
baş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ükle
butonuna 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:
bash
go version
1
Terminalde 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/arm64
1
Basit 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/www
altında yeni bir klasör oluşturmanız tavsiye edilir. Örnek olarak,go-servbay-demo
adında bir klasör oluşturalım.bashcd /Applications/ServBay/www mkdir go-servbay-demo cd go-servbay-demo
1
2
3Go Modules’u Başlatma: Proje kök dizinindeyken (
go-servbay-demo
), Go Modules'u başlatmak içingo mod init
komutunu 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-demo
1Bu komut, mevcut dizinde
go.mod
adlı bir dosya oluşturarak bağımlılıkları takip edecektir.Go Kodunu Yazma:
main.go
adı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.go
1Eğ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:8080
1
2Uygulamaya Erişim: Web tarayıcınızı açıp
http://localhost:8080
adresine 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
Siteler
bölümüne gidin. Site Ekle
düğ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.1
girin. - Port:
8080
girin.
- 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.demo
adresine 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
->Go
kı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 version
komutunu 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:
ini
# .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,direct
1
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: 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.config
dosyası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-a
Go 1.12 gerektiriyorproject-b
ise 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.12
1/Applications/ServBay/www/project-b/.servbay.config
:iniGO_VERSION=1.22
1
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
go
komutunu 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
->Go
kı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
->Go
bö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.org
sunucusunu 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.cn
veyahttps://goproxy.io
) kullanabilirsiniz. Bunu ServBay’in genel ayarlarından veya.servbay.config
dosyası 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.config
ile 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.config
ise 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.config
dosyası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.