gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:57:26 25 4
gpt4 key购买 nike

我是新来的模块,我正在尝试根据描述的结构建模的新项目中使用它们 here

这是我的目录结构的示例:

.
├── 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
  1. 这在惯用语上是正确的吗?我知道目前还没有达成很多共识,但我想遵循最佳做法。
  2. 当我运行 go build 时,我得到“意外的模块路径“github.com/ragurney/app_name/cmd/app_name””,但是当我运行 go build ./... 它有效。为什么?

当我将 main.go 移动到顶层时,一切都按预期工作。我是否应该不对模块使用 /cmd 模式?

最佳答案

要回答你的第一个问题,它完全是自以为是,无论你最喜欢什么,对于你应该接受的其他人来说也很容易理解(我认为这很好)。

要回答你的第二个问题,go build ./... 与根目录中的 go build 相反的原因是因为 ./.. . 从当前目录(根目录)开始,搜索所有程序入口点并构建它们。当您将 main.go 移动到根目录时,有了这个新信息,go build 工作就有意义了,因为它只在当前目录中查找。

您可以明确地说 go build ./cmd/app_name 这也可以。

您的应用程序结构与模块配合得非常好,因为我使用了与它非常相似的东西 (https://www.ardanlabs.com/blog/2017/02/package-oriented-design.html),并且模块对我来说工作得很好。

关于go - 使用/cmd 结构构建 Go 模块时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53122503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com