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 mainpaket, dan yang terakhir cenderung untuk meletakkan semuanya di srcdirektori. 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.goadalah package mypackdan 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 libsubdirektori. 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 libdirektori 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/mypackuntuk menggunakan kembali kode dalam proyek lain. Jika Anda menggunakan libmaka 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 maintanpa harus membuat proyek terpisah. misalnya main/myfoo/myfoo.godan main/mybar/mybar.go.