Go のリフレクションは動的インターフェイスの作成と実装を促進できますか?
Go のインターフェイスを利用すると、RPC スタイルのインターフェイスを定義できます。特定のサービスについては、次のようなインターフェイスが作成される可能性があります:
type MyService interface { Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
目標は、メソッド呼び出しを RPC 呼び出しに変換し、入力パラメーターをマーシャリングし、結果をアンマーシャリングすることによって、リフレクションを利用してこのインターフェイスを実現することです。リフレクションを使用してサービス呼び出しの入力パラメータの []インターフェイス{}を取得することは可能ですが、リフレクション ベースの関数を使用してインターフェイスを動的に実装する値を作成することは依然として困難です。
制限事項と代替手段アプローチ
リフレクションを通じてメソッドがアタッチされた型を生成し、その後その型のオブジェクトをインスタンス化することはできません。安全でないパッケージを使用することは理論的には可能ですが、それは困難な作業になります。
代わりに、対処しようとしている問題に関する追加のコンテキストを提供することで、コミュニティが代替解決策を提案できるようになります。
アップデート (2015 年 7 月 23 日)
Go 1.5 導入必要な機能を提供するreflect.FuncOfとreflect.MakeFunc。
以上がGo Reflection はインターフェイスを動的に作成して実装できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。