Go Modules Kullanımı
Go 1.11 ve 1.12, Go’nun bağımlılık sürüm bilgilerini açık ve kolay yönetilmesini sağlayan, yeni bağımlılık yönetimi sistemi olan modüller için ön destek içerir.
Modül, bir Go projesinin kök klasöründe yer alan projenin bağımlılıklarını barındıran bir dosyadır. go.mod
adında olmalıdır. go.mod
dosyası, aynı zamanda kök dizin için kullanılan içe aktarma yolu olan modülün modül yolunu ve başarılı bir derleme için gereken diğer bağımlılık gereksinimlerini tanımlar.
Uygulanacak Adımlar
- Yeni Modül Dosyası Oluşturma
- Bağımlılık Ekleme
- Bağımlılıkları Yükseltme
- Kullanılmayan Bağımlılıkları Kaldırma
Yeni Modül Dosyası Oluşturma
Merhaba Dünya!
değerini döndüren bir kütüphanemiz olsun.
merhaba.go
dosyamızın içeriği:
package merhaba
//Merhaba ...
func Merhaba() string {
return "Merhaba Dünya!"
}
Bir de main_test.go
ile test dosyamızı oluşturalım.
package merhaba
import "testing"
//TestMerhaba ...
func TestMerhaba(t *testing.T) {
istenen := "Merhaba Dünya!"
if Merhaba() != istenen {
t.Errorf("Gelen: %q, İstenen: %q", Merhaba(), istenen)
}
}
Açıklama yapmamız gereken bir bölüm yok. Buraya kadar anlaşılır şeyler.
go test .
komutunu kullandığımızda;
ok /C/Users/kaank/Desktop/merhaba 0.274s
Daha sonra go.mod
dosyamızı oluşturalım.
go mod init example.com/merhaba
go test .
komutunu yeniden kullanalım.
ok example.com/merhaba (cached)
Yukarıda gördüğünüz gibi paketimiz artık bir modül dosyası içeriyor.
go.mod
dosyamızın içeriğinde işe şu olacaktır.
module example.com/hello
Bağımlılık Ekleme
merhaba.go
dosyamızı aşağıdaki gibi düzenliyelim. Yani bir kütüphane ekleyip kullanalım.
package merhaba
import "github.com/fatih/color"
//Merhaba ...
func Merhaba() string {
color.Blue("Mavi Renkli Yazı")
return "Merhaba Dünya!"
}
github.com/fatih/color
kütüphanesi ekleyip kullandık.
go.mod
dosyamızda ise şu değişiklikler oldu.
module example.com/merhaba
go 1.15
require github.com/fatih/color v1.9.0
go list -m all
komutunu yazarak, tüm paket bağımlılıklarını görebiliriz.
Dikkat ettiyseniz ayrıca bir go.sum
dosyası da oluşturdu. Go komutu, projenizin bağlı olduğu modüllerin kötü niyetli, kazara veya başka nedenlerle beklenmedik bir şekilde değişmemesini sağlamak için, bu modüllerin gelecekteki indirmelerinin ilk indirmeyle aynı bitleri almasını sağlamak için go.sum
dosyasını kullanır. Yani indilecek olan bağımlılıkların doğruluğunu buradan kontrol eder.
Bağımlılıkları Yükseltme
go list -m all
komutu ile gerekli bağımlılıklara baktıktan sonra yükseltilmesini istediğiniz bağımlılığı go get
komutu ile yükseltebilirsiniz. Örnek:
go get github.com/fatih/color
Kullanılmayan Bağımlılıkları Kaldırma
Yukarıdaki örnek merhaba.go
dosyamızdaki color
kütüphanesini kullanmadığımızı varsayalım.
package merhaba
//Merhaba ...
func Merhaba() string {
return "Merhaba Dünya!"
}
Yani yukarıdaki gibi olsun...
Kullanılmayan kütüphaneleri go.mod
üzerinden kaldırmak için go mod tidy
komutunu kullanırız. Daha sonra go.mod
dosyamızın içi şu hale gelir.
module example.com/merhaba
go 1.15
go.sum
dosyamızın içeriğini ise tamamen boş olacaktır.