Saya telah mempelajari sejumlah proyek Go dan ada sedikit variasi. Anda dapat memberi tahu siapa yang datang dari C dan siapa yang datang dari Jawa, karena mantan membuang hampir semua yang ada di direktori root proyek dalam sebuah main
paket, dan yang terakhir cenderung untuk meletakkan semuanya di src
direktori. Namun tidak ada yang optimal. Masing-masing memiliki konsekuensi karena mereka memengaruhi jalur impor dan bagaimana orang lain dapat menggunakannya kembali.
Untuk mendapatkan hasil terbaik saya telah mengerjakan pendekatan berikut.
myproj/
main/
mypack.go
mypack.go
Di mana mypack.go
adalah package mypack
dan main/mypack.go
(jelas) package main
.
Jika Anda memerlukan file dukungan tambahan, Anda memiliki dua pilihan. Simpan semuanya di direktori root, atau letakkan file dukungan pribadi di lib
subdirektori. Misalnya
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Atau
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Hanya masukkan file dalam lib
direktori jika tidak dimaksudkan untuk diimpor oleh proyek lain. Dengan kata lain, jika itu file pendukung pribadi . Itulah ide di balik memiliki lib
- untuk memisahkan publik dari antarmuka pribadi.
Melakukan hal-hal seperti ini akan memberi Anda jalur impor yang bagus, myproj.org/mypack
untuk menggunakan kembali kode dalam proyek lain. Jika Anda menggunakan lib
maka file dukungan internal akan memiliki jalur impor yang menunjukkan itu myproj.org/lib/mysupport
,.
Saat membangun proyek, gunakan main/mypack
, misalnya go build main/mypack
. Jika Anda memiliki lebih dari satu yang dapat dieksekusi, Anda juga dapat memisahkannya di bawah main
tanpa harus membuat proyek terpisah. misalnya main/myfoo/myfoo.go
dan main/mybar/mybar.go
.