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
Libérer: 2024-12-24 05:30:14
original
944 Les gens l'ont consulté

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)
}
Copier après la connexion

Sortie :

My statement
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal