Maison >développement back-end >Golang >Comment puis-je appeler une méthode Go Struct par son nom à l'aide de Reflection ?

Comment puis-je appeler une méthode Go Struct par son nom à l'aide de Reflection ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-24 05:30:14950parcourir

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

Invocation de méthodes Struct par nom dans Go

La requête concerne l'appel d'une méthode sur une structure Go en spécifiant son nom. Contrairement à la fonction MethodByName() fournie, l'OP envisage une approche plus directe.

Mise en œuvre de la demande

Pour ce faire, utilisez les étapes suivantes :

  1. Obtenir la valeur de la structure : Utilisez Reflect.ValueOf pour obtenir la valeur de la structure pointeur.
  2. Localisez la méthode par nom : Utilisez MethodByName() pour trouver la méthode souhaitée dans la valeur de structure.
  3. Appelez la méthode : Appelez la méthode découverte en utilisant Call(), en passant une tranche vide d'arguments Reflect.Value dans ce cas.

Exemple de mise en œuvre :

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

Sortie :

My statement

Remarque : The MethodByName () accepte un argument de chaîne représentant le nom de la méthode.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn