ホームページ  >  記事  >  バックエンド開発  >  Go でリフレクションを使用して関数の名前を取得する方法は?

Go でリフレクションを使用して関数の名前を取得する方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-08 15:37:01407ブラウズ

How to Retrieve a Function's Name Using Reflection in Go?

リフレクションを使用した関数名の取得

Go では、リフレクションは、実行時にプログラム構造を検査および操作するメカニズムを提供します。関数名へのアクセスもそのような使用例の 1 つです。ただし、型から名前を直接取得しようとすると、空の文字列が返される可能性があります。

期待される動作

reflect.TypeOf(function) を使用して関数の名前を取得します。 Name() は型自体を指すため、空の文字列を返します。これには関数の内容が保持されません。 name.

Solution

関数の名前を取得するには、runtime.FuncForPC を利用する必要があります。この関数は、関数の反映値へのポインタを取得し、*Func 構造体へのポインタを返します。この *Func で Name メソッドを呼び出すと、次のような期待される関数名が得られます。

このアプローチでは、パッケージ名と関数名の両方が返されます。 「パッケージ.関数」。必要に応じて、文字列をトークン化することでパッケージ名を抽出できます。

以上がGo でリフレクションを使用して関数の名前を取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。