Go HTTP ハンドラーにおける ResponseWriter と Request の違い
Go HTTP ハンドラーでは、ResponseWriter は値として定義され、Request は値として定義されます。ポインタとして渡されます。この違いを理解するために、基礎となる型を調べてみましょう。
ResponseWriter は次のように定義されたインターフェイスです。
type ResponseWriter interface { ... }
これは、ResponseWriter が任意の具体的な型で実装できる単なるコントラクトであることを意味します。対照的に、Request は構造体として定義されます:
type Request struct { ... }
Request は具象型であるため、内部状態を変更できるようにポインターを使用して参照として渡す必要があります。これは、インターフェイスであるため値によって渡される ResponseWriter とは対照的です。
GAE で使用される ResponseWriter の特定の実装は、実際にはエクスポートされていない http.response 型へのポインタであり、渡しているような印象を与えます。値。ただし、上で見たように、ResponseWriter の基本的な定義はインターフェイスであり、値によって渡すことはできません。
最終的に、ResponseWriter を値として使用し、Request をポインターとして使用するという決定により、懸念事項を明確に分離できます。 ResponseWriter インターフェイスは、応答処理の一貫性と安定性を保証する一方、Request 構造体へのポインターにより内部状態を直接変更できるようにします。
以上がGo HTTP ハンドラーで `ResponseWriter` が値によって渡され、`Request` がポインタによって渡されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。