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)
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!