Heim > Backend-Entwicklung > Golang > Wie kann ich mithilfe von Reflection eine Go-Struct-Methode beim Namen aufrufen?

Wie kann ich mithilfe von Reflection eine Go-Struct-Methode beim Namen aufrufen?

Linda Hamilton
Freigeben: 2024-12-24 05:30:14
Original
944 Leute haben es durchsucht

How Can I Call a Go Struct Method by Its Name Using Reflection?

Aufrufen von Strukturmethoden nach Namen in Go

Die Abfrage bezieht sich auf den Aufruf einer Methode für eine Go-Struktur durch Angabe ihres Namens. Im Gegensatz zur bereitgestellten MethodByName()-Funktion sieht das OP einen direkteren Ansatz vor.

Implementieren der Anfrage

Um dies zu erreichen, verwenden Sie die folgenden Schritte:

  1. Erhalten Sie den Strukturwert: Verwenden Sie „reflect.ValueOf“, um den Wert der Struktur zu erhalten Zeiger.
  2. Methode nach Namen suchen: Verwenden Sie MethodByName(), um die gewünschte Methode innerhalb des Strukturwerts zu finden.
  3. Methode aufrufen: Rufen Sie die ermittelte Methode mit Call() auf und übergeben Sie dabei ein leeres Segment von Reflect.Value-Argumenten Fall.

Beispielimplementierung:

package main

import "fmt"
import "reflect"

type MyStruct struct {}

func (p *MyStruct) MyMethod() {
    fmt.Println("My statement")
}

func main() {
    var s MyStruct
    reflect.ValueOf(&s).MethodByName("MyMethod").Call(nil)
}
Nach dem Login kopieren

Ausgabe:

My statement
Nach dem Login kopieren

Hinweis: The MethodByName ()-Funktion akzeptiert ein Zeichenfolgenargument, das den Namen der Methode darstellt.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von Reflection eine Go-Struct-Methode beim Namen aufrufen?. 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