リフレクションを使用した関数名の取得
Go では、リフレクション システムにより、実行時に型と値のイントロスペクションと操作が可能になります。ただし、その型の Name メソッドを使用して関数の名前を取得すると、空の文字列が返されることがあります。
この問題を解決するには、ランタイム パッケージの FuncForPc 関数を使用します。これは関数値へのポインターを受け取り、*Func オブジェクトを返します。このオブジェクトは、Name メソッドで取得できる関数の名前へのアクセスを提供します。
FuncForPc を使用した例の修正バージョンを次に示します。
package main import ( "fmt" "reflect" "runtime" ) func main() { name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name() fmt.Println("Name of function :", name) }
このコードは、次の出力を出力します。
Name of function : main.main
パッケージ接頭辞のない関数名のみが必要な場合は、名前をトークン化できます。結果。
以上がGo でリフレクションを使用して関数名を取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。