Go のパラメータ名を反映する
Go メソッドのパラメータ名を決定したいことがよくあります。ただし、TMethod 関数を通じてこの情報を取得しようとすると、ユーザーは構造体名 (この場合は testData) のみが返されることに気付きます。
パラメータ名の不在について
Go では、メソッドまたは関数のパラメーターの名前は実行時情報に明示的に保存されません。これは、メソッドまたは関数の呼び出し元にとってパラメーター名が重要であるとはみなされないためです。焦点はパラメーターの型とその順序です。
同じパラメーターと結果の型を持つ 2 つの関数は、パラメーター名に関係なく、同じ型を持ちます。例:
func f1(a int) {} func f2(b int) {} fmt.Println(reflect.TypeOf(f1) == reflect.TypeOf(f2)) // Prints true
パラメータの命名に関する代替アプローチ
必要な機能が、「名前付き」パラメータを使用して関数を呼び出すためのフレームワークを作成することである場合、代替のアプローチが存在します。 :
さらにインサイト
詳細な情報と例については、次のリソースを参照してください:
以上がGo の `reflect.TypeOf` からパラメータ名を取得できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。