2 回答

TA貢獻1847條經驗 獲得超11個贊
我在我的第一個項目中也這樣做了。從那以后我了解到:
$GOPATH/bin/ pkg/ src/
布局由go get
類似的命令構成您可以將 .go 文件組織為單個平面項目目錄或子文件夾(警告:同一文件夾中的所有 .go 文件必須具有相同的包名稱)
將其他人的代碼
/vendor
放在項目根目錄中的目錄中,如果它是您的應用程序需要工作的代碼(谷歌這個,這是 go imo 最糟糕的部分)將您自己的項目放在您的 gopath 下,如果您希望它更易于訪問,請對其進行符號鏈接
所以我想你的代碼可能看起來像:
/Users/user2490003/MyGoPath/
? src/github.com/user2490003/myproject/
? model/
user.go
? myapp/
myapp.go
? vendor/github.com/jmoiron/sqlx/
sqlx.go
main.go
導入完整的包引用,如下所示:
// main.go
package main
import (
github.com/jmoiron/sqlx
github.com/user2490003/myproject/myapp
github.com/user2490003/myproject/model
)

TA貢獻1995條經驗 獲得超2個贊
我建議從一個看起來合乎邏輯且在當前有效的布局開始,然后在您的應用程序增長和發(fā)展時根據(jù)需要進行重構/重組。
使用您的公司命名空間是合理的 - 我會考慮為您的應用程序在其下方(例如company.co/my_app
)和內部創(chuàng)建一個目錄,庫包的子目錄(例如company.co/my_app/db
等)以及cmd
包含實際目錄的目錄您要生成的可執(zhí)行文件(package main
程序):cmd/exe1、cmd/exe2 等。這將允許您在其中擁有多個可執(zhí)行文件以及多個庫“子包”,my_app
它們可以獨立地包含在相應的導入路徑中。
我包含的每個庫(例如 sqlx 等)也有它自己的文件夾。
如果您可以使用來自 Github 的最新版本的依賴項,則不必將依賴項的代碼包含到您的存儲庫中,而是將它們安裝go get
到構建區(qū)域中。如果您想從本地副本構建 - 并且為了企業(yè)使用,它可能更適合穩(wěn)定性和審計跟蹤 - 您應該將它們放在vendor
子目錄中,例如company.co/my_app/vendor/github.com/jmoiron/sqlx
. 這樣,您可以控制何時升級到較新版本的依賴項,并確保上游更改不會在您不知情的情況下破壞您的構建或以其他方式影響您的程序,直到您有機會進行徹底的測試。
- 2 回答
- 0 關注
- 131 瀏覽
添加回答
舉報