Go で関数名を取得する方法
多くの場合、実行時に Go で関数の名前を取得することが望ましいです。これは、デバッグ目的、ログ記録、またはその他のメタプログラミング タスクに役立ちます。
runtime.FuncForPC: ネイティブ ソリューション
Go は、組み込み関数であるランタイムを提供します。 FuncForPC、PC (プログラム カウンター) アドレスを指定して関数の名前を取得できます。ただし、PC アドレスを取得するにはリフレクションが必要で、面倒な場合があります。
簡略化されたアプローチ
プロセスを簡素化するには、リフレクトとランタイムを使用する簡単なソリューションです。 FuncForPC は実装できます:
package main import ( "fmt" "reflect" "runtime" ) func foo() { } func GetFunctionName(i interface{}) string { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } func main() { fmt.Println("name:", GetFunctionName(foo)) }
この関数は汎用インターフェイス パラメーター i を受け取り、その名前を返します。そのインターフェースに関連付けられた関数。この場合、 foo は名前が取得される関数です。
使用例
次の例は、GetFunctionName 関数の使用法を示しています。
package main import ( "fmt" ) func foo() { } func main() { fmt.Println("name:", GetFunctionName(foo)) }
このプログラムを実行すると、次のように出力されます:
name: foo
これは確認しますGetFunctionName 関数が foo 関数の名前を正常に取得したことを確認します。
以上が実行時に Go 関数の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。