Maison > Article > développement back-end > Existe-t-il un moyen de rechercher par programme toutes les implémentations d’une interface dans Golang ?
Question :
Dans Golang, est-il possible d'identifier par programme toutes des structures qui implémentent une interface spécifiée ? Cela permettrait l'initialisation et la terminaison automatisées de ces structures au moment de l'exécution, sans coder en dur leurs noms dans le code.
Réponse :
Malheureusement, la réponse courte est non.
Explication :
Golang est un langage strictement typé, ce qui signifie que l'éditeur de liens peut éliminer les définitions de types, les méthodes et les fonctions qui ne sont pas utilisées par l'application. Par conséquent, à moins qu'un type (tel que struct A) ne soit référencé et utilisé quelque part dans le code, il ne sera pas inclus dans le binaire compilé.
De plus, même l'accès aux instances de types actuellement existantes implémentant une interface spécifique est pas réalisable.
Approche alternative :
Afin d'obtenir la fonctionnalité souhaitée, une approche alternative consiste à créer une carte ou une tranche globale qui stocke les instances de structures implémentant le interface. Chaque structure peut ensuite ajouter une instance à cette carte à l'aide d'une fonction init automatiquement appelée au démarrage de l'application. Ensuite, si nécessaire, l'application peut parcourir la carte et invoquer les méthodes souhaitées sur les instances.
Cette approche permet un enregistrement dynamique des structures et élimine le besoin de coder en dur leurs noms dans le code. Cependant, s'il existe plusieurs instances d'un type particulier, des mécanismes supplémentaires doivent être mis en œuvre pour gérer leur inscription et leur désinscription.
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!