ホームページ >バックエンド開発 >Golang >Go 構造体に「net/http.Request」を埋め込む方法は?

Go 構造体に「net/http.Request」を埋め込む方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-12 05:30:021020ブラウズ

How to Embed a `net/http.Request`  in a Go Struct?

Go 構造体への net/http.Request の埋め込み

Go では、ある構造体型を別の構造体型に埋め込むことができます。これにより、外部構造体で再度定義することなく、埋め込まれた構造体のフィールドを再利用できます。

次の例を考えてみましょう。

type MyRequest struct {
    http.Request
    PathParams map[string]string
}

ここで、MyRequest 構造体には http が埋め込まれています。リクエスト構造体。これは、http.Request の任意のフィールドに MyRequest のフィールドとしてアクセスできることを意味します。さらに、MyRequest には独自の PathParams フィールドがあります。

New 関数で匿名の内部構造体 http.Request を初期化するには、適切なフィールドを設定する必要があります。これは 2 つの方法で実行できます。

複合リテラルの使用

req := new(MyRequest)
req.PathParams = pathParams
req.Request = origRequest

複合リテラル構文を使用すると、構造体の新しいインスタンスを作成し、そのフィールドを 1 行で初期化できます。この場合、新しい MyRequest インスタンスを作成し、その PathParams フィールドを pathParams 引数の値に設定します。また、Request フィールドを origRequest 引数の値に設定します。

ポインター レシーバーの使用

req := &MyRequest{
  PathParams: pathParams
  Request: origRequest
}

ポインター レシーバー構文を使用すると、構造体ポインターのフィールドに直接アクセスできます。この場合、MyRequest インスタンスへの新しいポインターを作成し、その PathParams フィールドと Request フィールドを直接設定します。

これらのアプローチは両方とも、MyRequest 構造体の内部構造体 http.Request を、 origRequest 引数。

埋め込みとフィールドの名前の付け方の詳細については、次の Go 仕様を参照してください。 http://golang.org/ref/spec#Struct_types.

以上がGo 構造体に「net/http.Request」を埋め込む方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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