Çok sayıda Go projesi okudum ve oldukça fazla çeşitlilik var. C'nin kimden geldiğini ve Java'dan kimin geldiğini söyleyebilirsin, çünkü eski bir main
paketin proje kök dizinindeki her şeyi döküyor ve ikincisi her şeyi birsrc
dizine . Ancak her ikisi de optimal değildir. Her birinin sonuçları vardır, çünkü içe aktarma yollarını ve başkalarının bunları nasıl yeniden kullanabileceğini etkiler.
En iyi sonuçları almak için aşağıdaki yaklaşımı kullandım.
myproj/
main/
mypack.go
mypack.go
Burada mypack.go
olduğu package mypack
ve main/mypack.go
(tabii ki) 'dirpackage main
.
Ek destek dosyalarına ihtiyacınız varsa iki seçeneğiniz vardır. Hepsini kök dizinde tutun veya özel destek dosyalarını bir lib
alt dizine koyun . Örneğin
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Veya
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Dosyaları yalnızca lib
başka bir proje tarafından içe aktarılmaları amaçlanmadıysa bir dizine koyun . Başka bir deyişle, özel destek dosyalarıysa. Bu, lib
kamuyu özel arayüzlerden ayırmanın arkasındaki fikir .
İşleri bu şekilde yapmak myproj.org/mypack
, kodu diğer projelerde yeniden kullanmanız için size güzel bir içe aktarma yolu verecektir . Kullanırsanız, lib
dahili destek dosyalarının bunu gösteren bir alma yolu olacaktır myproj.org/lib/mysupport
.
Projeyi oluştururken main/mypack
, örn go build main/mypack
. Birden fazla çalıştırılabilir programınız varsa, main
ayrı projeler oluşturmak zorunda kalmadan bunları da ayırabilirsiniz . örneğin main/myfoo/myfoo.go
ve main/mybar/mybar.go
.