Struktur Folder Web App - Go
Di sarankan untuk menentukan struktur folder di dalam sebuah project adalah di awal
Saran :
don’t over-complicate things
sebetulnya pola struktur aplikasi, tidak selalu bisa di samakan, itu tergantung dengan situasi
jangan terlalu mem-perumit masalah, tambahkan struktur dan kompleksitas hanya jika di perlukan saja
Struktur yang di sarankan dan terbukti sukses di project go adalah :
cmd/
api-server/
handlers.go
main.go
internal/
users/
auth/
ui/
go.mod
cmd
directory akan berisi application-specific code untuk executable application di dalam project, kenapa application-specific karena di go kan hasil code di compile menjadi binary, nah nanti binary tersebut ketika di jalankan itu akan menjadi aplikasi spesifik, misal bisa menjadi web server, atau cli aplikasiinternal
berisi kode non-application-specific , menyimpan kode yang berpotensi dapat di gunakan kembali, seperti validation, model database SQL. kenapa non-application-specific karena code yang di dalam internal ini akan bisa digunakan untuk aplikasi spesifik seperti web, atau cli, atau lainya jadi bisa saja project kita memiliki 2 aplikasi atau 2 binary yaitu cli dan web api, tetapi ke 2 spesifik aplikasi ini akan bisa mengunakan kode yang sama misal, code model sql yang ada di dalam internalui
berisi user interface(UI) code seperti html, css, javascript
Penting :
arti
internal
di go memiliki arti penting, paket apa pun yang berada di bawah direktori ini hanya dapat hanya dapat di import dengan kode di dalam induk direktori internalartinya bahwa setiap paket yang berada di internal hanya dapat di import dengan kode di dalam direktori proyek kita.
berarti paket apapun di bawah internal tidak dapat diimpor dengan kode di luar proyek kita
cmd
adalah singkatan daricommand