我是新來的模塊,我正在嘗試按照此處描述的結構建模的新項目中使用它們這是我的目錄結構的示例:.├── cmd│ └── app_name│ └── main.go├── go.mod├── go.sum├── internal│ └── bot│ └── bot.go└── pkg ├── website_name │ ├── client.go │ ├── client.options.go │ ├── server.go │ └── server.options.go └── lib └── lib.go這在慣用語上是正確的嗎?我知道那里沒有太多共識,但我想遵循最佳實踐。當我運行時,go build我得到“意外的模塊路徑“github.com/ragurney/app_name/cmd/app_name””,但是當我運行時go build ./...它有效。為什么?當我移動main.go到頂層時,一切都按預期工作。我不應該將/cmd模式與模塊一起使用嗎?
3 回答

BIG陽
TA貢獻1859條經驗 獲得超6個贊
要回答您的第一個問題,它完全是自以為是,無論您最喜歡什么,對于您應該接受的其他人來說也很容易理解(我認為這很好)。
go build ./...
要回答你的第二個問題,而不是go build
從根目錄開始工作的原因是因為./...
從當前目錄(根目錄)開始并搜索所有程序入口點并構建它們。當您移動main.go
到根目錄時,有了這些新信息,go build
工作就有意義了,因為它只在當前目錄中查找。
您可以明確說明go build ./cmd/app_name
哪個也有效。
您的應用程序結構與模塊完美配合,因為我使用的是與它非常相似的東西 。

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
據我所知,您的項目結構沒有任何問題。對我有用的是從項目根目錄運行 go build/run 命令
例如。 go run github.com/username/project/cmd/somecommand
go build -o somebinary github.com/username/project/cmd/somecommand
- 3 回答
- 0 關注
- 144 瀏覽
添加回答
舉報
0/150
提交
取消