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