ホームページ > バックエンド開発 > Golang > Golang で呼び出し元関数の情報を取得するにはどうすればよいですか?

Golang で呼び出し元関数の情報を取得するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-26 05:50:32
オリジナル
477 人が閲覧しました

How Can I Get Caller Function Information in Golang?

Golang で呼び出し元関数の情報を取得する

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート