Zugriff auf Quelldateiinformationen in Go
In Sprachen wie C/C ermöglichen die Makros __FILE__ und __LINE__ einfachen Zugriff auf die aktuelle Datei und Zeilennummer. Bietet Go einen ähnlichen Mechanismus?
Antwort:
Ja, Go stellt für diesen Zweck die runtime.Caller-Funktion zur Verfügung. Es gibt einen Teil der uintptr-Variablen zurück, die auf Aufrufer-Frames im Aufrufstapel verweisen. Die Funktion fmt.Sprintf kann dann verwendet werden, um den Quelldateinamen und die Zeilennummerninformationen aus den Frames zu extrahieren.
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 }
Darüber hinaus kann runtime.Caller auch die Quelldateiinformationen für aufrufende Funktionen bereitstellen:
// 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)
Das obige ist der detaillierte Inhalt vonWie greift Go auf Quelldateiinformationen wie die __FILE__- und __LINE__-Makros von C/C zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!