同じ API に対して異なる JSON 応答を受け取る Go アプリケーションがあるため、カスタム アンマーシャラーを作成しようとしました。正しいものが見つかるまで、考えられるすべての JSON 応答を処理します。
これを行うために、JSON をアンマーシャリングするための汎用関数を作成し、リフレクションから取得した型を使用してそれを呼び出したいと考えています。
###例えば:### リーリーただし、Go コンパイラでは次のエラーが発生しました:
fieldType (変数型 Reflect.StructField) は型コンパイラ (NotAType) ではありません (NotAType)。
リフレクションパラメータを汎用関数に渡す方法はありますか?
reflect.New
を使用して、指定された値のreflect.Type を作成します。Go には継承がありません。質問の Unmarshal メソッドは、フィールドを持たない型に対して動作します。 「ハンドラー」を通常の関数に渡すことで修正されました。 リーリー p>マーシャル関数を次のように使用します:
リーリー
https://www.php.cn/link/c76e4b2fa54f8506719a5c0dc14c2eb9
以上がリフレクション経由で Type を渡して Go でジェネリック関数を呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。