Maison > développement back-end > Golang > le corps du texte

Existe-t-il un moyen de rechercher par programme toutes les implémentations d'une interface dans Golang ?

Linda Hamilton
Libérer: 2024-11-01 06:52:02
original
224 Les gens l'ont consulté

  Is There a Way to Programmatically Find All Implementations of an Interface in Golang?

Détection de 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!

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!