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

Wie kann ich Informationen zur Anruferfunktion in Golang erhalten?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 05:50:32484Durchsuche

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()
}

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)

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()
}

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()
}

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!

Stellungnahme:
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