リフレクション経由で Type を渡して Go でジェネリック関数を呼び出す方法

王林
リリース: 2024-02-05 22:21:03
転載
1224 人が閲覧しました

如何通过反射传递 Type 来调用 Go 中的泛型函数

質問の内容

同じ API に対して異なる JSON 応答を受け取る Go アプリケーションがあるため、カスタム アンマーシャラーを作成しようとしました。正しいものが見つかるまで、考えられるすべての JSON 応答を処理します。

これを行うために、JSON をアンマーシャリングするための汎用関数を作成し、リフレクションから取得した型を使用してそれを呼び出したいと考えています。

###例えば:### リーリー

ただし、Go コンパイラでは次のエラーが発生しました:

fieldType (変数型 Reflect.StructField) は型コンパイラ (NotAType) ではありません (NotAType)

リフレクションパラメータを汎用関数に渡す方法はありますか?

正解

この質問は Go の一般的な機能の範囲を超えています。

reflect.New

を使用して、指定された値のreflect.Type を作成します。

Go には継承がありません。質問の Unmarshal メソッドは、フィールドを持たない型に対して動作します。 「ハンドラー」を通常の関数に渡すことで修正されました。 リーリー p>マーシャル関数を次のように使用します:

リーリー

https://www.php.cn/link/c76e4b2fa54f8506719a5c0dc14c2eb9

以上がリフレクション経由で Type を渡して Go でジェネリック関数を呼び出す方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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