为了账号安全,请及时绑定邮箱和手机立即绑定

使用 /cmd 结构构建 Go 模块时出错

使用 /cmd 结构构建 Go 模块时出错

Go
PIPIONE 2023-05-04 17:41:30
我是新来的模块,我正在尝试按照此处描述的结构建模的新项目中使用它们这是我的目录结构的示例:.├── 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哪个也有效。

您的应用程序结构与模块完美配合,因为我使用的是与它非常相似的东西 。


查看完整回答
反对 回复 2023-05-04
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

据我所知,您的项目结构没有任何问题。对我有用的是从项目根目录运行 go build/run 命令

例如。 go run github.com/username/project/cmd/somecommand

go build -o somebinary github.com/username/project/cmd/somecommand


查看完整回答
反对 回复 2023-05-04
?
九州编程

TA贡献1785条经验 获得超4个赞

我更喜欢添加特定的文件来构建,有些项目有多个可执行文件

go build -o app ./cmd/server/main.go


查看完整回答
反对 回复 2023-05-04
  • 3 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信