Golang では、呼び出し元関数についての洞察を得ることができます。次のコード スニペットを考えてみましょう:
func foo() { // Do something } func main() { foo() }
foo が main から呼び出されたことをどのように判断できるでしょうか?という疑問が生じます。 C# などの他の言語では、CallerMemberName などの属性を使用してこのタスクを容易にします。
ありがたいことに、Golang は runtime.Caller 関数を使用したソリューションを提供します。
func Caller(skip int) (pc uintptr, file string, line int, ok bool)
例 #1: 呼び出し元のファイル名と行の出力Number
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: runtime.FuncForPC を使用した詳細情報の取得
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 の呼び出し元関数の情報。
以上がGolang で呼び出し元関数の情報を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。