我正在尝试用 Go 构建一个微服务架构项目。我目前使用的是支持模块的 Go 1.11,所以我将根目录放在GOPATH.如果我正确理解了微服务架构概念,尽管我的微服务需要独立,但它们可以共享依赖关系(而且我没有看到另一种做事的方式,是吗?)下面是我的目录结构:.├── go.mod├── lambda│ └── account_create│ └── main.go├── readme.md└── types ├── account.go ├── location.go ├── order.go ├── pricing.go ├── product.go └── types.go现在我期望的行为是能够运行go build lambda/account_create并获得具有该功能的可执行文件,这样我就可以将它提供给相应的 AWS Lambda 函数。但是,当我运行命令时,我得到:can't load package: package lambda/account_create: unknown import path "lambda/account_create": cannot find module providing package lambda/account_create请向我解释为什么这不起作用,并给我一些关于这样的项目应该是什么样子的建议。非常感谢!编辑这是我的lambda/account_create/main.go文件内容:package account_createimport ( "fmt" "roasted.ro/pkg/types")func main() { account := types.UserAccount{Name: "Victor"} fmt.Printf("Welcome %s", account.Name)}
1 回答
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
要回答你问题的后半部分(因为前半部分更多是关于偏好),你需要做:
go build ./lambda/account_create
注意./
. go build
接受包名或路径。如果您不在路径前添加一个./
,它会假定您为其提供了一个包名。
编辑main
:如果你想要一个可执行文件,包必须是。根据文档,您始终必须使用package main
构建可执行文件的项目:
可执行命令必须始终使用
package main
.
编辑:我将在布局上添加一些意见:
考虑将项目的哪些部分导出到其他 Go 项目。这意味着有人可以导入您的包并期望获得价值,并且不会在您的更改时破坏他们的代码。
那应该在一个github.com/you/pkg/somepath
包中或只是github.com/you/somepath
.
其他任何东西(主包除外)都应该在/internal
包下。
我通常/cmd/myexecurable1
/cmd/myexecurable2
为每个可执行文件制作一个等等。
- 1 回答
- 0 关注
- 94 浏览
添加回答
举报
0/150
提交
取消