Heim > Backend-Entwicklung > Golang > Wie kann ich Informationen zur Anruferfunktion in Golang erhalten?

Wie kann ich Informationen zur Anruferfunktion in Golang erhalten?

Susan Sarandon
Freigeben: 2024-12-26 05:50:32
Original
478 Leute haben es durchsucht

How Can I Get Caller Function Information in Golang?

Abrufen von Informationen zur Anruferfunktion in Golang

In Golang ist es möglich, Einblicke in die Anruferfunktion zu erhalten. Betrachten Sie den folgenden Codeausschnitt:

func foo() {
    // Do something
}

func main() {
    foo()
}
Nach dem Login kopieren

Es stellt sich die Frage: Wie können wir feststellen, dass foo von main aufgerufen wurde? Andere Sprachen wie C# erleichtern diese Aufgabe mithilfe von Attributen wie CallerMemberName.

Glücklicherweise bietet Golang mit der runtime.Caller-Funktion eine Lösung.

func Caller(skip int) (pc uintptr, file string, line int, ok bool)
Nach dem Login kopieren

Beispielimplementierungen

Beispiel #1: Name und Leitung der Anruferdatei drucken Nummer

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    _, file, no, ok := runtime.Caller(1)
    if ok {
        fmt.Printf("called from %s#%d\n", file, no)
    }
}

func main() {
    foo()
}
Nach dem Login kopieren

Beispiel Nr. 2: Abrufen weiterer Informationen mit runtime.FuncForPC

package main

import (
    "fmt"
    "runtime"
)

func foo() {
    pc, _, _, ok := runtime.Caller(1)
    details := runtime.FuncForPC(pc)
    if ok & details != nil {
        fmt.Printf("called from %s\n", details.Name())
    }
}

func main() {
    foo()
}
Nach dem Login kopieren

Durch die Verwendung dieser Beispiele können Sie mühelos Einblicke gewinnen Informationen zur Aufruferfunktion in Go.

Das obige ist der detaillierte Inhalt vonWie kann ich Informationen zur Anruferfunktion in Golang erhalten?. 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