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

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

Linda Hamilton
リリース: 2024-12-20 08:56:11
オリジナル
861 人が閲覧しました

How Can I Retrieve Caller Function Information in Go?

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

Go で呼び出し元関数の情報を取得することができます。これにより、呼び出しスタックを追跡し、呼び出しコンテキストを識別し、さまざまなデバッグまたはプロファイリング操作を実行できます。

runtime.Caller の使用

呼び出し元情報を取得する主な方法は、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 を使用した詳細情報の取得

さらに詳細な情報については、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 サイトの他の関連記事を参照してください。

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