ホームページ >バックエンド開発 >Golang >公開せずに Go Cloud 機能間でヘルパー パッケージを共有するにはどうすればよいですか?

公開せずに Go Cloud 機能間でヘルパー パッケージを共有するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-11 16:04:20327ブラウズ

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

Google Cloud Functions の Go のサブパッケージ

質問:

Go 内でヘルパー パッケージを利用するにはどうすればよいですかCloud Function は、同じプロジェクト内の複数の関数間で (公開せずに) 確実にアクセスできるようにします。公開)?

答え:

Go の高度な依存関係管理システムである Go モジュールを採用することで、サブパッケージを操作するための効果的なソリューションが提供されます。モジュールを使用すると、GOPATH の外部で操作し、依存関係のバージョンを正確に管理できます。

重要なことに、モジュールを使用すると、一貫したインポート パス プレフィックスを使用して Go パッケージ グループを定義できます。 Cloud Function 内では、この機能を利用してモジュール内の他のパッケージをインポートできます。

デプロイされた関数はモジュールのルートに存在する必要があることに注意してください。例として次のファイル構造を考えてみましょう:

.
├── 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。