Go でのソース ファイル情報へのアクセス
C/C のような言語では、 __FILE__ マクロと __LINE__ マクロを使用して現在のファイルに簡単にアクセスでき、行番号。 Go も同様のメカニズムを提供していますか?
答え:
はい、Go はこの目的のために runtime.Caller 関数を提供します。呼び出しスタック内の呼び出し元フレームを指す uintptr 変数のスライスを返します。 fmt.Sprintf 関数を使用して、フレームからソース ファイル名と行番号情報を抽出できます。
import ( "fmt" "runtime" ) func main() { // Get the caller function information frames := runtime.Callers(1, 2) // Extract the source file name and line number fileName, line := getFileInfo(frames[0]) fmt.Printf("Source file: %s, Line number: %d", fileName, line) } // Function to extract file name and line number from caller frame func getFileInfo(f uintptr) (string, int) { // Extract the file name frame := runtime.Frame(f) return frame.File, frame.Line }
さらに、runtime.Caller は、関数を呼び出すためのソース ファイル情報も提供できます。
// Get the caller function information frames := runtime.Callers(2, 3) // Skip the main function and runtime.Callers // Extract the source file name and line number fileName, line := getFileInfo(frames[0]) fmt.Printf("Source file: %s, Line number: %d", fileName, line)
以上がGo は C/C の __FILE__ マクロや __LINE__ マクロなどのソース ファイル情報にどのようにアクセスしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。