リフレクションを使用した関数名の取得
Go では、リフレクションは、実行時にプログラム構造を検査および操作するメカニズムを提供します。関数名へのアクセスもそのような使用例の 1 つです。ただし、型から名前を直接取得しようとすると、空の文字列が返される可能性があります。
期待される動作
reflect.TypeOf(function) を使用して関数の名前を取得します。 Name() は型自体を指すため、空の文字列を返します。これには関数の内容が保持されません。 name.
Solution
関数の名前を取得するには、runtime.FuncForPC を利用する必要があります。この関数は、関数の反映値へのポインタを取得し、*Func 構造体へのポインタを返します。この *Func で Name メソッドを呼び出すと、次のような期待される関数名が得られます。
このアプローチでは、パッケージ名と関数名の両方が返されます。 「パッケージ.関数」。必要に応じて、文字列をトークン化することでパッケージ名を抽出できます。
以上がGo でリフレクションを使用して関数の名前を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。