【发布时间】:2018-11-03 00:59:37
【问题描述】:
我是新的模块,我正在尝试在一个新项目中试用它们,我试图按照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
- 这在惯用语上正确吗?我知道目前还没有很多共识,但我想遵循最佳做法。
- 当我运行
go build时,我得到“意外的模块路径”github.com/ragurney/app_name/cmd/app_name”,但是当我运行go build ./...时它可以工作。为什么?
当我将 main.go 移动到顶层时,一切都按预期工作。我不应该将/cmd 模式与模块一起使用吗?
【问题讨论】:
-
go.mod 中的
module行是什么?听起来它指的是cmd/app_name,这是不正确的——它应该指向它所在的目录。 -
它具体指向
cmd/app_name:module github.com/ragurney/app_name/cmd/app_name。所以应该是:github.com/ragurney/app_name?这样做会导致类似的错误:“找不到提供包 github.com/ragurney/app_name 的模块” -
是的,如果那是根目录(go.mod 文件所在的位置),它应该是
github.com/ragurney/app_name。您的仓库中是否偶然有多个go.mod文件?
标签: go go-modules