Heim > Backend-Entwicklung > Golang > Wie greift Go auf Quelldateiinformationen wie die __FILE__- und __LINE__-Makros von C/C zu?

Wie greift Go auf Quelldateiinformationen wie die __FILE__- und __LINE__-Makros von C/C zu?

Susan Sarandon
Freigeben: 2024-12-04 11:28:10
Original
281 Leute haben es durchsucht

How Does Go Access Source File Information Like C/C  's __FILE__ and __LINE__ Macros?

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
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage