質問:
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 サイトの他の関連記事を参照してください。