我正在嘗試用 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現(xiàn)在我期望的行為是能夠運行go build lambda/account_create并獲得具有該功能的可執(zhí)行文件,這樣我就可以將它提供給相應的 AWS Lambda 函數(shù)。但是,當我運行命令時,我得到: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文件內(nèi)容:package account_createimport ( "fmt" "roasted.ro/pkg/types")func main() { account := types.UserAccount{Name: "Victor"} fmt.Printf("Welcome %s", account.Name)}
1 回答

素胚勾勒不出你
TA貢獻1827條經(jīng)驗 獲得超9個贊
要回答你問題的后半部分(因為前半部分更多是關于偏好),你需要做:
go?build?./lambda/account_create
注意./
.?go build
接受包名或路徑。如果您不在路徑前添加一個./
,它會假定您為其提供了一個包名。
編輯main
:如果你想要一個可執(zhí)行文件,包必須是。根據(jù)文檔,您始終必須使用package main
構建可執(zhí)行文件的項目:
可執(zhí)行命令必須始終使用
package main
.
編輯:我將在布局上添加一些意見:
考慮將項目的哪些部分導出到其他 Go 項目。這意味著有人可以導入您的包并期望獲得價值,并且不會在您的更改時破壞他們的代碼。
那應該在一個github.com/you/pkg/somepath
包中或只是github.com/you/somepath
.
其他任何東西(主包除外)都應該在/internal
包下。
我通常/cmd/myexecurable1
?/cmd/myexecurable2
為每個可執(zhí)行文件制作一個等等。
- 1 回答
- 0 關注
- 123 瀏覽
添加回答
舉報
0/150
提交
取消