Erkag
Administrator
Yönetici
Go programlama dilinde modüller, projelerin bağımlılıklarını yönetmek ve yeniden kullanılabilir kod yapıları oluşturmak için kullanılan temel bir yapı taşıdır. Go 1.11 sürümünden itibaren tanıtılan modül sistemi, bağımlılık yönetimini kolaylaştırmak ve projelerin daha düzenli olmasını sağlamak için tasarlanmıştır. Bu rehberde, Go modüllerinin ne olduğunu, nasıl oluşturulacağını ve nasıl kullanılacağını adım adım açıklayacağız.
Modüllerin temel avantajları:
Go 1.11 veya daha yeni bir sürüm yüklü olmalıdır. Ayrıca, GOPATH yerine modül tabanlı bir proje oluşturacağımız için GO111MODULE=on ortam değişkenini ayarlamanız önerilir:
Proje Dizini Oluşturun
Yeni bir proje için bir dizin oluşturun ve içine girin:
Modülü Başlatın
go mod init komutunu kullanarak modülü başlatın. Modül adı genellikle projenizin Git deposunun URL’sine dayanır (örneğin, GitHub üzerindeki bir proje için github.com/kullanici/proje). Örnek:
Bu komut, dizinde bir go.mod dosyası oluşturur. Dosya içeriği şöyle görünecektir:
main.go adında bir dosya oluşturun ve basit bir program yazın:
Programı Çalıştırın
Programı çalıştırmak için şu komutu kullanın:
Çıktı: Merhaba, Go Modülü!
Kodu Güncelleyin
main.go dosyasını şu şekilde güncelleyin:
Bağımlılıkları Güncelleyin
Terminalde şu komutu çalıştırın:
Bu komut, go.mod dosyasına github.com/gorilla/mux bağımlılığını ekler ve gerekirse bir go.sum dosyası oluşturur. Güncellenmiş go.mod dosyası şöyle görünebilir:
go.sum dosyası ise bağımlılıkların bütünlüğünü doğrulamak için kullanılır.
Sunucuyu Çalıştırın
Programı çalıştırın:
Tarayıcınızda http://localhost:8080 adresine giderek "Merhaba, Gorilla Mux!" mesajını görebilirsiniz.
Dizini bir Git deposuna dönüştürün:
GitHub’da bir depo oluşturun ve yerel deponuzu uzak depoya bağlayın:
Modülünüzü başka bir projede kullanmak için, diğer projelerde go.mod dosyasına şu şekilde ekleyebilirsiniz:
Sürüm etiketlerini kullanmak için Git deposunda sürüm etiketleri oluşturmanız gerekir (örneğin, git tag v0.1.0).
C: Evet, ancak modüller bağımlılık yönetimini büyük ölçüde kolaylaştırır. Modül kullanmadan GOPATH ile çalışmak, özellikle büyük projelerde karmaşık hale gelebilir.
S: go.mod ve go.sum dosyalarının farkı nedir?
C: go.mod, modülün bağımlılıklarını ve sürüm bilgilerini tanımlar. go.sum, bağımlılıkların doğruluğunu ve güvenliğini sağlamak için kullanılan bir doğrulama dosyasıdır.
S: Eski bir projeyi modüllere nasıl geçiririm?
C: Eski projenizin dizininde go mod init <modül-adı> komutunu çalıştırın ve ardından go mod tidy ile bağımlılıkları düzenleyin.
S: Modül sürümünü nasıl belirlerim?
C: Sürüm etiketlerini (örneğin, v1.0.0) Git deposunda oluşturarak belirtebilirsiniz. Go, bu etiketleri kullanarak modül sürümlerini tanır.
S: Yerel bir modülü nasıl kullanırım?
C: Yerel bir modülü kullanmak için go.mod dosyasında replace direktifini kullanabilirsiniz. Örneğin:
Go Modülleri Nedir?
Go modülleri, bir Go projesinin bağımlılıklarını ve sürüm bilgilerini tanımlayan bir sistemdir. Her modül, bir go.mod dosyası ile tanımlanır ve bu dosya, projenin kullandığı paketlerin sürümlerini ve modülün kendi kimliğini içerir. Modüller, kodun yeniden kullanılabilirliğini artırır ve bağımlılık çakışmalarını önler.Modüllerin temel avantajları:
- Bağımlılık Yönetimi: Projenizin ihtiyaç duyduğu paketleri ve sürümlerini açıkça belirtir.
- Sürüm Kontrolü: Belirli bir bağımlılık sürümüne bağlı kalmanızı sağlar.
- Taşınabilirlik: Kodunuzu farklı makinelerde veya projelerde kolayca paylaşabilirsiniz.
Adım 1: Go Ortamını Hazırlama
Başlamadan önce Go’nun yüklü olduğundan emin olun. Terminalde şu komutu çalıştırarak Go sürümünüzü kontrol edebilirsiniz:
Kod:
go version
Go 1.11 veya daha yeni bir sürüm yüklü olmalıdır. Ayrıca, GOPATH yerine modül tabanlı bir proje oluşturacağımız için GO111MODULE=on ortam değişkenini ayarlamanız önerilir:
Kod:
export GO111MODULE=on
Adım 2: Yeni Bir Modül Oluşturma
Bir Go modülü oluşturmak için şu adımları izleyin:Proje Dizini Oluşturun
Yeni bir proje için bir dizin oluşturun ve içine girin:
Kod:
mkdir mymodulecd mymodule
Modülü Başlatın
go mod init komutunu kullanarak modülü başlatın. Modül adı genellikle projenizin Git deposunun URL’sine dayanır (örneğin, GitHub üzerindeki bir proje için github.com/kullanici/proje). Örnek:
Kod:
go mod init github.com/kullanici/mymodule
Bu komut, dizinde bir go.mod dosyası oluşturur. Dosya içeriği şöyle görünecektir:
Kod:
module github.com/kullanici/mymodule
go 1.20
- module: Modülün benzersiz kimliğini belirtir.
- go: Kullanılan Go sürümünü tanımlar.
main.go adında bir dosya oluşturun ve basit bir program yazın:
Kod:
package main
import "fmt"
func main() {
fmt.Println("Merhaba, Go Modülü!")
}
Programı Çalıştırın
Programı çalıştırmak için şu komutu kullanın:
Kod:
go run .
Çıktı: Merhaba, Go Modülü!
Adım 3: Bağımlılık Ekleme
Bir modüle harici bir paket eklemek için, paketi kodunuzda içe aktarmanız ve ardından go mod tidy komutunu çalıştırmanız yeterlidir. Örneğin, popüler bir HTTP kütüphanesi olan gorilla/mux’ı ekleyelim.Kodu Güncelleyin
main.go dosyasını şu şekilde güncelleyin:
Kod:
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
)
func main() {
router := mux.NewRouter()
router.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Merhaba, Gorilla Mux!")
})
fmt.Println("Sunucu 8080 portunda çalışıyor...")
log.Fatal(http.ListenAndServe(":8080", router))
}
Bağımlılıkları Güncelleyin
Terminalde şu komutu çalıştırın:
Kod:
go mod tidy
Bu komut, go.mod dosyasına github.com/gorilla/mux bağımlılığını ekler ve gerekirse bir go.sum dosyası oluşturur. Güncellenmiş go.mod dosyası şöyle görünebilir:
Kod:
module github.com/kullanici/mymodule
go 1.20
require github.com/gorilla/mux v1.8.1
go.sum dosyası ise bağımlılıkların bütünlüğünü doğrulamak için kullanılır.
Sunucuyu Çalıştırın
Programı çalıştırın:
Kod:
go run .
Tarayıcınızda http://localhost:8080 adresine giderek "Merhaba, Gorilla Mux!" mesajını görebilirsiniz.
Adım 4: Modülü Paylaşma
Modülünüzü başkalarının kullanabilmesi için bir Git deposuna yükleyebilirsiniz (örneğin, GitHub). Modülünüzü paylaşmak için:Dizini bir Git deposuna dönüştürün:
Kod:
git init
git add .
git commit -m "İlk modül commit"
GitHub’da bir depo oluşturun ve yerel deponuzu uzak depoya bağlayın:
Kod:
git remote add origin https://github.com/kullanici/mymodule.git
git push -u origin main
Modülünüzü başka bir projede kullanmak için, diğer projelerde go.mod dosyasına şu şekilde ekleyebilirsiniz:
Kod:
require github.com/kullanici/mymodule v0.1.0
Sürüm etiketlerini kullanmak için Git deposunda sürüm etiketleri oluşturmanız gerekir (örneğin, git tag v0.1.0).
Adım 5: Modül Komutları
Go modül sistemi, bağımlılık yönetimi için çeşitli komutlar sunar:- go mod init <modül-adı>: Yeni bir modül oluşturur.
- go mod tidy: Kullanılmayan bağımlılıkları temizler ve gerekli olanları ekler.
- go mod vendor: Bağımlılıkları yerel bir vendor/ dizinine kopyalar (opsiyonel).
- go mod download: Bağımlılıkları indirir.
- go mod graph: Bağımlılık grafiğini gösterir.
- go get <paket>: Belirli bir paketi veya sürümü ekler.
FAQS
S: Go modülleri olmadan proje geliştirebilir miyim?C: Evet, ancak modüller bağımlılık yönetimini büyük ölçüde kolaylaştırır. Modül kullanmadan GOPATH ile çalışmak, özellikle büyük projelerde karmaşık hale gelebilir.
S: go.mod ve go.sum dosyalarının farkı nedir?
C: go.mod, modülün bağımlılıklarını ve sürüm bilgilerini tanımlar. go.sum, bağımlılıkların doğruluğunu ve güvenliğini sağlamak için kullanılan bir doğrulama dosyasıdır.
S: Eski bir projeyi modüllere nasıl geçiririm?
C: Eski projenizin dizininde go mod init <modül-adı> komutunu çalıştırın ve ardından go mod tidy ile bağımlılıkları düzenleyin.
S: Modül sürümünü nasıl belirlerim?
C: Sürüm etiketlerini (örneğin, v1.0.0) Git deposunda oluşturarak belirtebilirsiniz. Go, bu etiketleri kullanarak modül sürümlerini tanır.
S: Yerel bir modülü nasıl kullanırım?
C: Yerel bir modülü kullanmak için go.mod dosyasında replace direktifini kullanabilirsiniz. Örneğin:
Kod:
replace github.com/kullanici/mymodule => ../mymodule