Go でインターフェースを使用して RPC スタイルのインターフェースを定義するのは一般的な方法です。次の例を考えてみましょう。
type MyService interface{ Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
リフレクションを使用してこのインターフェイスを実装するには、メソッド呼び出しを RPC 呼び出しに変換し、入力パラメーターをマーシャリングし、結果をメソッドの出力にアンマーシャルして戻す必要があります。
ただし、リフレクション関数を呼び出してインターフェイスを実装する値を作成するリフレクションを使用する簡単な方法はありません。
安全でないパッケージは、このようなソリューションは潜在的には可能ですが、非常に複雑でエラーが発生しやすくなります。このアプローチを追求することはお勧めできません。
リフレクションを使用して関数を作成するのではなく、Go の設計原則によりよく適合する代替ソリューションを検討することを検討してください。特定の問題を説明するか、よりカスタマイズされた推奨事項を提供する必要があります。
更新:
Go 1.5 では、reflect.FuncOf と Reflect.MakeFunc が導入されました。必要に応じてリフレクションを使用した関数を作成できるようになりました。
以上がGo Reflection はインターフェイスを実装する関数を作成できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。