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