ฉันได้ศึกษาโครงการ Go หลายโครงการและมีการเปลี่ยนแปลงบ้าง คุณสามารถบอกได้ว่าใครมาจาก C และผู้ที่มาจาก Java เนื่องจากการดัมพ์ก่อนหน้านี้เกี่ยวกับทุกอย่างในไดเรกทอรีรากของโครงการในmain
แพ็คเกจและหลังมักจะใส่ทุกอย่างในsrc
ไดเรกทอรี อย่างไรก็ตามมันก็ไม่เหมาะ แต่ละรายการมีผลกระทบเนื่องจากมีผลกระทบต่อเส้นทางการนำเข้าและวิธีที่ผู้อื่นสามารถนำมาใช้ซ้ำได้
เพื่อให้ได้ผลลัพธ์ที่ดีที่สุดฉันได้ทำตามแนวทางต่อไปนี้
myproj/
main/
mypack.go
mypack.go
ในกรณีที่mypack.go
เป็นpackage mypack
และmain/mypack.go
เป็น package main
(ชัด)
หากคุณต้องการไฟล์สนับสนุนเพิ่มเติมคุณมีสองทางเลือก ให้เก็บไว้ในไดเรกทอรีรากหรือวางไฟล์การสนับสนุนส่วนตัวในlib
ไดเรกทอรีย่อย เช่น
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
หรือ
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
ใส่เฉพาะไฟล์ในlib
ไดเรกทอรีหากไม่ได้ตั้งใจจะนำเข้าจากโครงการอื่น กล่าวอีกนัยหนึ่งถ้าพวกเขาเป็นไฟล์สนับสนุนส่วนตัว นั่นคือแนวคิดที่อยู่เบื้องหลังlib
- เพื่อแยกสาธารณะออกจากส่วนต่อประสานส่วนตัว
การทำสิ่งต่าง ๆ ด้วยวิธีนี้จะช่วยให้คุณมีเส้นทางการนำเข้าที่ดีmyproj.org/mypack
เพื่อนำรหัสมาใช้ในโครงการอื่น ๆ ถ้าคุณใช้แล้วไฟล์การสนับสนุนภายในจะมีเส้นทางนำเข้าที่บ่งบอกถึงว่าlib
myproj.org/lib/mysupport
เมื่อมีการสร้างโครงการที่ใช้เช่นmain/mypack
go build main/mypack
หากคุณมีมากกว่าหนึ่งปฏิบัติการคุณยังสามารถแยกเหล่านั้นภายใต้main
โดยไม่ต้องสร้างโครงการแยกต่างหาก เช่นและmain/myfoo/myfoo.go
main/mybar/mybar.go