ฉันกำลังทำงานในโครงการใหม่โดยใช้ Go และเราทุกคนยังใหม่กับ Go เรากำลังติดตามโครงสร้างไดเรคทอรี go มาตรฐานและมีโค้ดทั้งหมดอยู่ด้านล่าง
$ GOPATH / src / github.com / CompanyName / projectname
ซึ่งก็เป็นรากของพื้นที่เก็บข้อมูลคอมไพล์
รูปแบบเส้นทางที่แนะนำมาตรฐานดูเหมือนแปลกโดยเฉพาะอย่างยิ่งถ้าเรากำลังทำงานในโครงการหลายภาษาเช่นส่วนที่เหลือตาม Go / http backend และ html / javascript front-end ในกรณีนี้ฉันอาจต้องการให้โครงสร้างโครงการของฉันเป็นดังนี้:
/
doc/
src/
server/
main.go
module1/
module.go
client/
index.html
Makefile
แต่จริง ๆ แล้วจำเป็นต้องวางรหัสไว้ใน GOPATH หรือไม่
ในความพยายามฉันได้สร้างโปรแกรมขนาดเล็กที่ซอร์สโค้ดอยู่นอก GOPATH ฉันได้อย่างง่ายดายสามารถแยกโครงการออกเป็นแพคเกจเพื่อให้main
แพคเกจสามารถอ้างอิงfoo
แพคเกจในโฟลเดอร์โดยใช้foo/
import "./foo"
เท่าที่ฉันเห็นมีสองสิ่งที่ไม่เชื่อฟังฉัน:
- รหัสอื่นไม่สามารถนำเข้ารหัสนี้ได้ นี่ไม่ใช่ปัญหาเนื่องจากเราสร้างบริการเฉพาะสำหรับ บริษัท
- ฉันไม่สามารถใช้
go install
เพื่อติดตั้งได้ ไม่มีปัญหาเช่นกัน ไปป์ไลน์การติดตั้งเครื่องมือ
อย่างไรก็ตามอนุญาตให้เซิร์ฟเวอร์การสร้างไม่มีพื้นที่ทำงานอยู่ภายใน GOPATH
วิธีการดังกล่าวท้อใจหรือไม่ ถ้าเป็นเช่นนั้นทำไมถึงเป็นเช่นนั้น?
มีผลข้างเคียงเชิงลบอื่น ๆ นอกเหนือจากที่ฉันระบุ
โปรดจำไว้ว่านี่เป็นโครงการส่วนตัวสำหรับ บริษัท ไม่ใช่รหัสโอเพ่นซอร์สสาธารณะ
การแยกโครงการจริงออกจาก GOPATH นั้นน่าดึงดูด แต่ก็ควรระวังในการทำลายกฎเมื่อคุณอยู่บนเวทีชู