ホームページ > バックエンド開発 > Golang > Go でメソッドのパラメータ名を取得するにはどうすればよいですか?

Go でメソッドのパラメータ名を取得するにはどうすればよいですか?

DDD
リリース: 2024-12-26 13:19:13
オリジナル
458 人が閲覧しました

How Can I Retrieve Method Parameter Names in Go?

Go でのメソッド パラメーター名の取得

Go では、メソッド パラメーターの名前にアクセスするのが難しい場合があります。他の多くの言語とは異なり、Go は関数やメソッドの型自体にパラメータ名を保存しません。

次のメソッドを考えてみましょう:

func (t *T) TMethod(data *testData) (interface{}, *error) {
    ...
}
ログイン後にコピー

リフレクションを使用してパラメータ データの名前を取得するには、次のことを試みることもできます:

reflect.ValueOf(T).MethodByName("TMethod").Type.In(0).Elem().Name()
ログイン後にコピー

ただし、これはデータの型名 (testData) を返します。この動作の背後にある理由は、Go の関数の独特な性質です。

パラメーター名が保存されない理由

Go では、関数の型はその入力のみを表します。および出力タイプ。パラメーター名は、関数の呼び出し方法や実行方法とは関係がないため、重要ではない情報とみなされます。これにより、言語の型システムが簡素化されます。

次の点を考慮してください:

  • パラメーターと結果の型が同じ 2 つの関数は、パラメーターに関係なく、同じ関数の型を持ちます。 names.
  • パラメータには名前を付けることができません (例: func foo(int, string))、レンダリング

考えられる代替案

パラメータ名はリフレクションを通じて取得できないため、次の代替案を検討してください:

  • 構造体の使用: 構造体では名前付きフィールドが使用できます。リフレクション (reflect.Type.FieldByName など) を使用して、受信パラメータを構造体フィールドにマップできます。
  • マップの使用: マップは、受信パラメータを名前付き値にマッピングするのに適しています。

Go は詳細なパラメータ情報よりもタイプ セーフティと単純さを優先することを覚えておいてください。

以上がGo でメソッドのパラメータ名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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