我是新来的模块,我正在尝试按照此处描述的结构建模的新项目中使用它们这是我的目录结构的示例:.├── 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 关注
- 88 浏览
添加回答
举报
0/150
提交
取消