GoLang での呼び出し元情報の取得
GoLang で別の関数を呼び出した関数に関する情報を確認することは可能ですか?以下の foo() などの関数が main() から呼び出された場合、どうすればそれを確認できますか?
func foo() { // Perform some actions } func main() { foo() }
C# などの一部の言語では、これを取得するための CallerMemberName 属性などの機能が提供されています。データに対して、GoLang は別のアプローチを採用しています。
解決策: runtime.Caller
GoLang は、呼び出し元の情報を取得する runtime.Caller 関数を提供します。その構文は次のとおりです。
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
例 1: 呼び出し元ファイル名と行番号の表示
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() }
例 2: ランタイムによる詳細情報の収集。 FuncForPC
より包括的な情報については、 runtime.FuncForPC を runtime.Caller:
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 で発信者情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。