問題:
如何在Go 中使用幫助程式包雲功能,同時確保它們可以跨同一專案中的多個功能存取(無需發布它們公開)?
答案:
採用 Go 模組,Go 的高階依賴管理系統為使用子套件提供了有效的解決方案。模組使您能夠在 GOPATH 之外進行操作並精確管理依賴項的版本。
至關重要的是,模組允許使用一致的導入路徑前綴定義 Go 包組。在您的雲端函數中,您可以利用此功能匯入模組中的其他套件。
請務必注意,您部署的函數應駐留在模組的根目錄中。以下列檔案結構為例:
. ├── cmd │ └── main.go # For testing purposes, can import and configure your function. ├── function.go # Imports "example.com/foo/helperpackage" ├── function_test.go ├── go.mod # Module "example.com/foo" └── helperpackage └── helper.go
在此設定中,您的函數駐留在 function.go 中並由 function_test.go 進行測試。這些元件屬於模組“example.com/foo”,function.go可以導入“example.com/foo/helperpackage”。
此外,cmd目錄方便本地測試。透過匯入“example.com/foo”,您可以初始化一個 HTTP 伺服器,該伺服器利用您的函數處理程序處理請求。以下程式碼範例說明了這種方法:
package main import ( "log" "net/http" "example.com/foo" ) func main() { http.Handle("/HelloHTTP", foo.HelloHTTP) log.Fatal(http.ListenAndServe(":8080", nil)) }
雖然使用供應商目錄可以實現類似的結果,但需要將子包單獨複製到供應商目錄中(使用其完整導入路徑),從而使維護麻煩。因此,這種方法並不常用於子包。
以上是如何在不公開發布的情況下在 Go Cloud 函數之間共用輔助套件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!