Heim >Backend-Entwicklung >Golang >Wie kann ich den Namen einer Go-Funktion zur Laufzeit abrufen?
So rufen Sie Funktionsnamen in Go ab
Oft ist es wünschenswert, den Namen einer Funktion in Go zur Laufzeit abzurufen. Dies kann für Debugging-Zwecke, Protokollierung oder andere Metaprogrammierungsaufgaben nützlich sein.
runtime.FuncForPC: Eine native Lösung
Go bietet eine integrierte Funktion, Runtime. FuncForPC, das den Namen einer Funktion anhand ihrer PC-Adresse (Programmzähler) abrufen kann. Allerdings ist Reflektion erforderlich, um die PC-Adresse zu erhalten, was umständlich sein kann.
Ein vereinfachter Ansatz
Um den Prozess zu vereinfachen, eine unkomplizierte Lösung mit Reflect und Runtime. FuncForPC kann implementiert werden:
package main import ( "fmt" "reflect" "runtime" ) func foo() { } func GetFunctionName(i interface{}) string { return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() } func main() { fmt.Println("name:", GetFunctionName(foo)) }
Diese Funktion akzeptiert einen generischen Schnittstellenparameter i und gibt den Namen der dieser Schnittstelle zugeordneten Funktion zurück. In diesem Fall ist foo die Funktion, deren Name abgerufen wird.
Beispielverwendung
Das folgende Beispiel zeigt die Verwendung der GetFunctionName-Funktion:
package main import ( "fmt" ) func foo() { } func main() { fmt.Println("name:", GetFunctionName(foo)) }
Wenn Sie dieses Programm ausführen, wird Folgendes ausgegeben:
name: foo
Dies bestätigt, dass der GetFunctionName Funktion ruft erfolgreich den Namen der foo-Funktion ab.
Das obige ist der detaillierte Inhalt vonWie kann ich den Namen einer Go-Funktion zur Laufzeit abrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!