Heim > Backend-Entwicklung > Golang > Wie erhalte ich den Namen einer Funktion mithilfe von Go Reflection?

Wie erhalte ich den Namen einer Funktion mithilfe von Go Reflection?

Linda Hamilton
Freigeben: 2024-11-12 20:45:02
Original
1029 Leute haben es durchsucht

How to Obtain the Name of a Function Using Go Reflection?

Reflexion in Go verstehen: Funktionsnamen abrufen

Im Reflexionssystem von Go ist das Abrufen des Namens einer Funktion nicht so einfach, wie es sein könnte erscheinen. Das erwartete Verhalten besteht in bestimmten Szenarien darin, beim Aufrufen der Name-Methode eine leere Zeichenfolge zu erhalten.

Unerwartete leere Zeichenfolge:

Bei Verwendung des folgenden Codeausschnitts wird der Name Methode gibt eine leere Zeichenfolge zurück:

package main

import "fmt"
import "reflect"

func main() {
    typ := reflect.TypeOf(main)
    name := typ.Name()
    fmt.Println("Name of function: " + name)
}
Nach dem Login kopieren

In diesem Beispiel versuchen wir, den Namen der Hauptfunktion mithilfe von Reflektion abzurufen. Die Ausgabe lautet jedoch „Name der Funktion:“, was auf einen leeren Namen hinweist.

Lösung mit runtime.FuncForPC:

Der Schlüssel zur Lösung dieses Problems liegt in der Verwendung die runtime.FuncForPC-Funktion. Diese Funktion gibt einen Zeiger auf einen Func-Typ zurück, der zusätzliche Informationen über die Funktion bereitstellt, einschließlich ihres Namens.

package main

import "fmt"
import "reflect"
import "runtime"

func main() {
    name := runtime.FuncForPC(reflect.ValueOf(main).Pointer()).Name()
    fmt.Println("Name of function: " + name)
}
Nach dem Login kopieren

Das Ergebnis lautet nun „main.main“, was den Namen der Funktion genau wiedergibt Funktion. Wenn Sie nur den Funktionsnamen ohne den Paketnamen extrahieren möchten, können Sie die Zeichenfolge mit der Funktion strings.SplitN teilen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich den Namen einer Funktion mithilfe von Go Reflection?. 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