Rumah > Artikel > pembangunan bahagian belakang > GO — Struktur projek
Saya mula memprogramkan menggunakan Golang secara nyata pada tahun ini (2022), dan perkara yang saya lakukan segera ialah mencari rujukan tentang cara terbaik untuk mengubah struktur saya untuk projek itu. Siaran ini hanyalah salah satu daripada banyak lagi yang bercakap tentang subjek yang sama, dan, mungkin itulah sebabnya saya memutuskan untuk menulisnya.
Pertama, golang sudah berbeza sama sekali dalam cara ia berurusan dengan folder/pakej, dan, untuk menambah baik, ia mempunyai intipati yang sangat berpandangan, dengan banyak dokumen rasmi yang memaklumkan seperti apa "goway" melakukan sesuatu (penuh of me touch), walau bagaimanapun, dalam cara anda menyusun fail dan folder anda, sebenarnya tidak ada hala tuju, jadi setiap orang memberikan tafsiran mereka sendiri tentang dunia kepada bahagian ini.
Saya akan membahagikan siaran ini kepada 3 rujukan dan kemudian menunjukkan bagaimana gabungan rujukan ini ternyata dalam projek.
Sistem kompleks yang berfungsi sentiasa berkembang daripada sistem mudah yang berfungsi.
-- Undang-undang Hempedu
Untuk aplikasi kecil, struktur projek hendaklah ringkas.
"Komuniti" melakukan tinjauan terhadap satu set corak reka letak sejarah dan baru muncul yang biasa dalam ekosistem Go Terdapat banyak perkara menarik dalam tinjauan ini, tetapi yang menarik perhatian saya ialah folder /cmd dan /dalaman
Aplikasi utama untuk projek ini.
Nama direktori untuk setiap aplikasi mesti sepadan dengan nama boleh laku yang anda mahu miliki (cth. /cmd/myapp).
Aplikasi peribadi dan kod perpustakaan. Ini adalah kod yang anda tidak mahu orang lain mengimport ke dalam aplikasi atau perpustakaan mereka. Ambil perhatian bahawa corak reka letak ini dikenakan oleh pengkompil Go itu sendiri.
Seni bina yang memisahkan "butiran" dengan lebih baik daripada perkara yang sebenarnya memberikan nilai.
Untuk aplikasi mudah, saya cuba untuk menjadikannya ringkas, namun, apabila skop menjadi lebih besar sedikit, saya cuba membuat sedikit perbezaan antara apa itu "teras"/domain dan apa itu perincian/infrastruktur.
Perhatikan bahawa dalam cmd Saya tidak mempunyai folder tuttipet, seperti yang dicadangkan oleh projek rujukan. Pada mulanya saya cuba menggunakan corak yang dicadangkan, tetapi memandangkan API ini sudah pun keluar dengan antara muka baris arahan dan penyedia untuk terraform, saya memutuskan untuk meninggalkannya dengan cara ini.
Mengambil zum masuk pantas pada teras. Saya cuba bersederhana di sini dan tidak membuat folder. Saya hanya mengekalkan 1 titik hubungan dengan dunia luar (main.go), apa sahaja yang digeneralisasikan mempunyai failnya sendiri dan apa sahaja yang tidak kekal dalam konteksnya, mudah.
Dengan tuttipet.Baharu (pendek, ringkas dan menggugah) lapisan "kotor" boleh berinteraksi dengan kes penggunaan (saya dapati perkataan usecase lebih mudah untuk diasimilasikan daripada interaksi)
Zum masuk pada butiran dengan cepat. Berikut ialah alat yang membolehkan domain tersebut mencapai kejayaannya.
Saya masih menolak laluan yang ditawarkan oleh Golang, masih cuba memikirkan apa yang boleh dilakukan dengannya, namun, walaupun saya tidak suka cara Go dalam melakukan beberapa perkara, ia telah terbukti agak mudah dan mantap.
Ringkasan, cuba menjadikannya ringkas apabila boleh dan jika ia menjadi terlalu rumit... Saya akan kembali ke papan lukisan.
https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a
https://github.com/golang-standards/project-layout
https://blog.boot.dev/golang/golang-project-structure/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-structure-my-go-project/
https://blog.logrocket.com/flat-structure-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-structure-go-code/
https://dev.to/jinxankit/go-project-structure-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/flat-application-structure/
https://go.dev/doc/effective_go#names
https://go.dev/blog/package-names
Siaran asal: https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d
Atas ialah kandungan terperinci GO — Struktur projek. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!