Go で呼び出し元関数の情報を取得することができます。これにより、呼び出しスタックを追跡し、呼び出しコンテキストを識別し、さまざまなデバッグまたはプロファイリング操作を実行できます。
呼び出し元情報を取得する主な方法は、runtime.Caller です。関数。情報を取得する前にスキップするスタック フレームの数を示す整数の引数を受け取ります。デフォルトでは、1 フレームをスキップし、直接の呼び出し元に関するデータを提供します。
runtime.Caller 関数は、uintptr、ファイル パスを表す文字列、行番号を表す整数、および取得は成功しました。
呼び出し元ファイルの取得をデモンストレーションするには名前と行番号:
package main import ( "fmt" "runtime" ) func foo() { _, file, no, ok := runtime.Caller(1) if ok { fmt.Printf("called from %s#%d\n", file, no) } } func main() { foo() }
さらに詳細な情報については、runtime.FuncForPC を使用して、呼び出し側関数を表す *Func オブジェクトを取得できます。 。このオブジェクトは、関数名やパッケージ パスなどの追加データへのアクセスを提供します。
package main import ( "fmt" "runtime" ) func foo() { pc, _, _, ok := runtime.Caller(1) details := runtime.FuncForPC(pc) if ok & details != nil { fmt.Printf("called from %s\n", details.Name()) } } func main() { foo() }
これらのメソッドを使用すると、Go の呼び出し元関数に関する情報を簡単に収集できます。これはデバッグやプロファイリングに役立ちます。 、その他の高度なプログラミング シナリオ。
以上がGo で呼び出し元関数の情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。