Dans Go, la possibilité d'appeler une méthode sur une structure par son nom offre une grande flexibilité. Bien que la fonction MethodByName() existe, elle n'est pas directement applicable aux structures.
Pour y parvenir, suivez ces étapes :
Commencez par obtenir la valeur de la structure à l'aide de Reflect.ValueOf(&structInstance). Cela donne accès aux informations de type de la structure.
Utilisez Type.MethodByName() sur le type de la structure pour obtenir la réflexion de la méthode. Cela nécessite de connaître le nom exact de la méthode que vous souhaitez appeler.
Une fois la méthode obtenue, appelez sa méthode Call() avec une tranche d'arguments si nécessaire pour exécuter la méthode.
Considérez le code suivant :
type MyStruct struct { // some fields } func (ms *MyStruct) MyMethod() { fmt.Println("My statement.") } func CallMethodByName(s interface{}, methodName string) { v := reflect.ValueOf(s) m := v.Type().MethodByName(methodName) m.Call([]reflect.Value{}) } func main() { ms := MyStruct{} CallMethodByName(&ms, "MyMethod") // Prints "My statement." }
Cet exemple définit une fonction personnalisée CallMethodByName() qui imite la fonctionnalité souhaitée. Il résume les étapes nécessaires pour trouver la méthode par son nom et l'appeler.
En suivant ces étapes, vous pouvez invoquer dynamiquement des méthodes sur les structures dans Go, offrant ainsi une plus grande flexibilité et un plus grand contrôle sur le comportement de votre code.
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!