La réflexion dans Go peut-elle faciliter la création et la mise en œuvre d'interfaces dynamiques ?
En utilisant les interfaces dans Go, on peut définir des interfaces de style RPC. Pour un service spécifique, une interface comme la suivante peut être créée :
type MyService interface { Login(username, password string) (sessionId int, err error) HelloWorld(sessionId int) (hi string, err error) }
L'objectif est d'exploiter la réflexion pour réaliser cette interface en transformant les appels de méthode en appels RPC, en rassemblant les paramètres d'entrée et en désorganisant les résultats. Bien qu'il soit possible d'utiliser la réflexion pour obtenir une []interface{} de paramètres d'entrée pour les appels de service, la création d'une valeur qui implémente dynamiquement une interface à l'aide de fonctions basées sur la réflexion reste insaisissable.
Limitations et alternatives Approches
Il n'est pas possible de générer un type avec des méthodes attachées par réflexion et d'instancier ensuite un objet de ce type. Bien que théoriquement réalisable en utilisant le package non sécurisé, ce serait une entreprise ardue.
Au lieu de cela, fournir un contexte supplémentaire sur le problème que vous essayez de résoudre permettrait à la communauté de suggérer des solutions alternatives.
Mise à jour (23 juillet 2015)
Go 1.5 a introduit Reflect.FuncOf et Reflect.MakeFunc, qui fournit la fonctionnalité souhaitée.
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!