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

构建一个多可执行的 Go 项目

构建一个多可执行的 Go 项目

Go
哆啦的时光机 2023-05-04 16:56:17
我正在尝试用 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为每个可执行文件制作一个等等。


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

添加回答

举报

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