【发布时间】:2018-10-29 06:30:20
【问题描述】:
我正在尝试在 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_create
import (
"fmt"
"roasted.ro/pkg/types"
)
func main() {
account := types.UserAccount{Name: "Victor"}
fmt.Printf("Welcome %s", account.Name)
}
【问题讨论】:
-
传递完全限定的导入路径(以模块名称开头)或
./lambda/account_create(注意前导./)。 -
@Peter 它不再抱怨,但没有生成可执行文件。
-
为什么要投反对票?我真的在努力为这样的项目找到一个好的结构,我相信其他人也会感兴趣。
-
开发与 Golang 共享公共代码部分的多模块项目并不容易,我收到了来自我的 Maven golang 包装工具的用户的一些请求(Maven 提供了构建多模块应用程序的好方法)和我已经做了一些 Maven 多模块 Golang 项目的例子,如果你想尝试这种方法,只需安装 Maven 并从 github.com/raydac/mvn-golang-example 中编写的architype 构建项目骨架@
标签: go aws-lambda structure microservices go-modules