首頁 >後端開發 >Golang >如何在不公開發布的情況下在 Go Cloud 函數之間共用輔助套件?

如何在不公開發布的情況下在 Go Cloud 函數之間共用輔助套件?

DDD
DDD原創
2024-12-11 16:04:20333瀏覽

How to Share Helper Packages Between Go Cloud Functions Without Public Publication?

Google Cloud Functions 中的子包

問題:

如何在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn