„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie rufe ich den Namen einer Funktion mithilfe von Reflection in Go ab?

Wie rufe ich den Namen einer Funktion mithilfe von Reflection in Go ab?

Veröffentlicht am 10.11.2024
Durchsuche:255

How to Retrieve a Function's Name Using Reflection in Go?

Funktionsnamen mit Reflektion abrufen

In Go bietet Reflektion den Mechanismus zum Überprüfen und Bearbeiten von Programmstrukturen zur Laufzeit. Der Zugriff auf den Namen einer Funktion ist ein solcher Anwendungsfall. Der Versuch, den Namen direkt aus seinem Typ abzurufen, kann jedoch zu einer leeren Zeichenfolge führen.

Erwartetes Verhalten

Abrufen des Namens einer Funktion mit „reflect.TypeOf(function)“. Name() gibt eine leere Zeichenfolge zurück, da es auf den Typ selbst zeigt, der nicht die Funktion enthält name.

Lösung

Um den Namen der Funktion abzurufen, müssen wir runtime.FuncForPC verwenden. Diese Funktion nimmt den Zeiger auf den reflektierten Wert der Funktion und gibt einen Zeiger auf eine *Func-Struktur zurück. Der Aufruf der Name-Methode für diese *Func ergibt den erwarteten Funktionsnamen als:

name := runtime.FuncForPC(reflect.ValueOf(function).Pointer()).Name()

This Der Ansatz gibt sowohl den Paket- als auch den Funktionsnamen zurück, z. B. „Paket.Funktion“. Bei Bedarf kann der Paketname durch Tokenisierung der Zeichenfolge extrahiert werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3