Ç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 mainpaketin 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.goolduğu package mypackve 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 libalt 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 libbaş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, libkamuyu ö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, libdahili 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, mainayrı projeler oluşturmak zorunda kalmadan bunları da ayırabilirsiniz . örneğin main/myfoo/myfoo.gove main/mybar/mybar.go.