デバッグ機能を強化するには、現在の関数の名前を取得することが重要です。 gcc の FUNCTION マクロと同様に、Go はこの情報を取得するメカニズムを提供します。
次の関数を考えてみましょう:
func foo() { trace() }
次のような情報を自動的に出力することを目指しています。 "Entering foo()...".
ランタイム パッケージは、必要な機能:
import "fmt" func trace() { pc := make([]uintptr, 10) // At least one entry required runtime.Callers(2, pc) // Get the function associated with the program counter f := runtime.FuncForPC(pc[0]) // Obtain the file name, line number, and function name file, line := f.FileLine(pc[0]) fmt.Printf("%s:%d %s\n", file, line, f.Name()) }
このスクリプトでは、呼び出し元は、呼び出し元の関数に関連付けられたプログラム カウンターを PC スライスに設定します。次に、FuncForPC を使用して、スライス内の最初のプログラム カウンターに関連付けられた関数を取得します。最後に、FileLine はファイル名、行番号、関数名を提供し、コンソールに出力します。
以上がデバッグのために Go で現在の関数の名前を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。