ホームページ > バックエンド開発 > Golang > Go で現在の関数名を取得するにはどうすればよいですか?

Go で現在の関数名を取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 13:02:13
オリジナル
173 人が閲覧しました

How Can I Get the Current Function Name in Go?

Go で現在の関数名を取得する

Go プログラムの実行フローを追跡するには、現在の関数名。これは、デバッグやログの目的に役立ちます。

Go で現在の関数名を取得するには、引数としてプログラム カウンター (PC) を受け取り、対応する関数を返す runtime.FuncForPC 関数を使用できます。物体。これを使用する例を次に示します。

package main

import (
    "fmt"
    "runtime"
)

func trace() {
    pc := make([]uintptr, 10)  // at least 1 entry needed
    runtime.Callers(2, pc)
    f := runtime.FuncForPC(pc[0])
    file, line := f.FileLine(pc[0])
    fmt.Printf("%s:%d %s\n", file, line, f.Name())
}

func main() {
    trace()
}
ログイン後にコピー

実行すると、このプログラムは次の出力を出力します。

/path/to/file.go:13 trace
ログイン後にコピー

この出力は、トレース関数がオンラインで呼び出されたことを示します。ファイル file.go.

の 13 注: Go バージョン 1.7 以降では、代わりに runtime.CallersFrames を使用することをお勧めします。 runtime.FuncForPC の。 runtime.CallersFrames を使用した更新された例は次のとおりです:

package main

import (
    "fmt"
    "runtime"
)

func trace() {
    pcs := make([]uintptr, 10)
    n := runtime.CallersFrames(2, pcs)
    frames := runtime.CallersFrames(n)
    frame, _ := frames.Next()
    fmt.Printf("%s:%d %s\n", frame.File, frame.Line, frame.Function)
}

func main() {
    trace()
}
ログイン後にコピー

以上がGo で現在の関数名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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