ホームページ > バックエンド開発 > Golang > Go は http.Server Handler が空の構造体にアタッチされた関数を呼び出す方法を理解していません

Go は http.Server Handler が空の構造体にアタッチされた関数を呼び出す方法を理解していません

WBOY
リリース: 2024-02-10 16:00:11
転載
618 人が閲覧しました

Go 不理解 http.Server Handler 如何调用附加到空结构的函数

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

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート