我正在嘗試用 Go 構(gòu)建一個微服務(wù)架構(gòu)項目。我目前使用的是支持模塊的 Go 1.11,所以我將根目錄放在GOPATH.如果我正確理解了微服務(wù)架構(gòu)概念,盡管我的微服務(wù)需要獨立,但它們可以共享依賴關(guān)系(而且我沒有看到另一種做事的方式,是嗎?)下面是我的目錄結(jié)構(gòu):.├── go.mod├── lambda│ └── account_create│ └── main.go├── readme.md└── types ├── account.go ├── location.go ├── order.go ├── pricing.go ├── product.go └── types.go現(xiàn)在我期望的行為是能夠運行g(shù)o build lambda/account_create并獲得具有該功能的可執(zhí)行文件,這樣我就可以將它提供給相應(yīng)的 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請向我解釋為什么這不起作用,并給我一些關(guān)于這樣的項目應(yīng)該是什么樣子的建議。非常感謝!編輯這是我的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個贊
要回答你問題的后半部分(因為前半部分更多是關(guān)于偏好),你需要做:
go?build?./lambda/account_create
注意./
.?go build
接受包名或路徑。如果您不在路徑前添加一個./
,它會假定您為其提供了一個包名。
編輯main
:如果你想要一個可執(zhí)行文件,包必須是。根據(jù)文檔,您始終必須使用package main
構(gòu)建可執(zhí)行文件的項目:
可執(zhí)行命令必須始終使用
package main
.
編輯:我將在布局上添加一些意見:
考慮將項目的哪些部分導(dǎo)出到其他 Go 項目。這意味著有人可以導(dǎo)入您的包并期望獲得價值,并且不會在您的更改時破壞他們的代碼。
那應(yīng)該在一個github.com/you/pkg/somepath
包中或只是github.com/you/somepath
.
其他任何東西(主包除外)都應(yīng)該在/internal
包下。
我通常/cmd/myexecurable1
?/cmd/myexecurable2
為每個可執(zhí)行文件制作一個等等。
- 1 回答
- 0 關(guān)注
- 130 瀏覽
添加回答
舉報
0/150
提交
取消