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
Linda HamiltonOriginal
2024-12-24 05:30:14947Durchsuche

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)
}

Ausgabe:

My statement

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!

Stellungnahme:
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