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

我正在尝试用 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)

}


哆啦的时光机
浏览 95回答 1
1回答

素胚勾勒不出你

要回答你问题的后半部分(因为前半部分更多是关于偏好),你需要做: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为每个可执行文件制作一个等等。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go