Aynı Proje Altındaki Yerel Paketler
go mod init <module name>
Go versiyon 1.13’le standart hale gelen modül yapısı, yeni başlayanlar
için kafa karıştırıcı olabiliyor. Bu yazıda yerel paket ve import
kullanımını inceleyeceğiz.
Hemen basit bir golang projesi oluşturalım, projemizin adı hello
olsun;
$ mkdir hello && cd $_ && go mod init hello && touch main.go && mkdir world && cd $_ && touch {hi,bye}.go && cd ../..
Bu çılgın one-liner’dan sonra hemen oluşan dizinlere bakalım:
$ tree hello/
hello/
├── world
│ ├── bye.go
│ └── hi.go
├── go.mod
└── main.go
1 directory, 4 files
Hemen go.mod
’a bakalım ne yazıyor?
$ cd hello/
$ cat go.mod
module hello
go 1.17
Modülümüzün adı hello
… Üstte go mod init hello
kısmında bu modülün adını
belirttik.
Hemen world/
’ü yerel bir paket haline getirelim ve sırasıyla; hi.go
ve bye.go
dosyalarını düzenleyelim:
world/hi.go
package world
// Hi says Hi to given name!
func Hi(name string) string {
return "Hi " + name + "!"
}
world/bye.go
package world
// Bye says Bye to given name!
func Bye(name string) string {
return "Bye " + name + "!"
}
Yerel olarak geliştirdiğimiz world
paketini asıl uygulama içinde kullanalım;
main.go
package main
import (
"fmt"
"hello/world"
)
func main() {
sayHi := world.Hi("vigo")
sayBye := world.Bye("vigo")
fmt.Println(sayHi) // Hi vigo!
fmt.Println(sayBye) // Bye vigo!
}
Aynı proje içinde bulunan hello/
dizini hello
paketi oldu ve içinde 2 tane
.go
dosyası ve bunların da içinde 2 tane exportable yani başka paketler
tarafından import edilebilir fonksiyon oldu.
Bu yöntemle sayesinde, bir tür; özel/private yerel paket kullanımı yapabilirsiniz. Projeyi GitHub repomuzdan da inceleyebilirsiniz.