Heim > Backend-Entwicklung > Golang > Kann Go den Namen einer Funktion programmgesteuert abrufen?

Kann Go den Namen einer Funktion programmgesteuert abrufen?

Mary-Kate Olsen
Freigeben: 2024-12-24 10:02:55
Original
925 Leute haben es durchsucht

Can Go Programmatically Retrieve a Function's Name?

Funktionsnamen in Go abrufen

Frage:

Ist es möglich, den Namen einer Funktion in Go programmgesteuert abzurufen? ? Können wir beispielsweise anhand der Funktion foo() ihren Namen mit einer Methode wie GetFunctionName(foo) ermitteln?

Antwort:

Ja, das ist möglich Ermitteln Sie den Namen einer Funktion in Go mithilfe von runtime.FuncForPC Funktion.

Lösung:

Hier ist eine Lösung mit runtime.FuncForPC:

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))
}
Nach dem Login kopieren

Erklärung:

  • reflect.ValueOf(i).Pointer() ruft die Speicheradresse von ab Die Funktion i.
  • runtime.FuncForPC nimmt den Zeiger und gibt einen runtime.Func-Wert zurück.
  • runtime.Func.Name() gibt den Namen der Funktion zurück, die dem runtime.Func-Wert zugeordnet ist .

Durch den Aufruf von GetFunctionName(foo) erhalten Sie die Zeichenfolge „foo“ als Ergebnis.

Das obige ist der detaillierte Inhalt vonKann Go den Namen einer Funktion programmgesteuert abrufen?. 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