php エディター Banana が、Go 言語に関する質問に答えます。Go は、http.Server Handler が空の構造体にアタッチされた関数を呼び出す方法を理解していません。 Go 言語では、http.Server は HTTP リクエストを処理するために使用される構造体であり、Handler フィールドはインターフェイス タイプです。インターフェイス型は、一連のメソッドを定義する特別な型です。 Handler フィールドに関数を割り当てると、Go 言語はリフレクション メカニズムを使用して関数を呼び出します。ただし、空の構造体に関数をアタッチすると、Go 言語は関数の呼び出し方法を正しく理解できなくなります。これは、空の構造体でメソッドが呼び出された場合、実際のオブジェクトのインスタンスを取得できないためです。この問題を解決するには、レシーバーでクロージャまたはメソッドを使用します。
簡単な Web サーバー コードがありますが、このコードが理解できません:
ハンドラー: app.routes()、
リーリールーティング ファイル内:
リーリーこれは効果的です。リクエストを受信したときにroutes()関数が呼び出されます。 しかし、この Routes() が空の構造体にアタッチされたときにトリガーされることをどのようにして知るのでしょうか?
リーリーアプリケーションは、routes() についてどこで認識しますか?
関数の func (app *config)
とは何ですか?
ルートは、以下に示すように http サーバーに接続されます。
リーリーroutes
は、config
構造体のメソッドです。 config
が空の場合でも、コードのように routes
メソッドを呼び出すことができます。
config
構造体は、ここではメソッド レシーバーとして機能します。
以上がGo は http.Server Handler が空の構造体にアタッチされた関数を呼び出す方法を理解していませんの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。