Heim > Backend-Entwicklung > Golang > Wie kann ich die Signatur einer Go-Funktion als Zeichenfolge abrufen?

Wie kann ich die Signatur einer Go-Funktion als Zeichenfolge abrufen?

Patricia Arquette
Freigeben: 2024-11-23 00:12:34
Original
1029 Leute haben es durchsucht

How Can I Retrieve a Go Function's Signature as a String?

Abrufen der Signatur einer Funktion als String in Go

Bestimmen der Signatur einer Funktion mit einem bestimmten Namen und einer bestimmten Signatur in Go in Go Das Hauptpaket ist entscheidend für die Bereitstellung informativer Fehlermeldungen bei Unstimmigkeiten.

Kann reflektieren.Type.String() Signatur abrufen?

Reflect.Type.String() bietet zwar den Namen des Typs (wie main.ModuleInitFunc), liefert jedoch nicht die vollständige Signatur. Dies wird besonders deutlich, wenn es um Funktionswerte geht, die benannte Typen haben.

Konstruktion der Signatur

Um die Signatur zu erstellen, müssen wir manuell Informationen aus dem Reflect.Type sammeln .

  • Type.In() liefert den Typ des iten Parameter.
  • Type.Out() stellt den Typ des iten Ergebnistyps bereit.

Beispielimplementierung

Unten ist eine Beispielfunktion, die die Signatur eines Funktionswerts generiert:

func signature(f interface{}) string {
    t := reflect.TypeOf(f)
    if t.Kind() != reflect.Func {
        return "<not a function>"
    }

    ...

    return buf.String()
}
Nach dem Login kopieren

Diese Funktion erstellt die Signatur, indem die Eingabe- und Ausgabetypen durchlaufen und zu einer für Menschen lesbaren Zeichenfolge zusammengesetzt werden.

Testen der Signaturfunktion

Das Testen der Signaturfunktion liefert die folgenden Ergebnisse:

fmt.Println(signature(func(i int) error { return nil })) // func (int) error
fmt.Println(signature(myFunc)) // func (int) error
fmt.Println(signature(time.Now)) // func () time.Time
fmt.Println(signature(os.Open)) // func (string) (*os.File, error)
fmt.Println(signature(log.New)) // func (io.Writer, string, int) *log.Logger
fmt.Println(signature("")) // <not a function>
Nach dem Login kopieren

Es ist wichtig zu beachten, dass Go keinen Zugriff auf Parameter- und Ergebnistypnamen bietet, daher werden diese weggelassen Unterschrift.

Das obige ist der detaillierte Inhalt vonWie kann ich die Signatur einer Go-Funktion als Zeichenfolge 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