Maison  >  Article  >  développement back-end  >  Comment éviter les assertions de type lorsque vous travaillez avec des interfaces dans Go ?

Comment éviter les assertions de type lorsque vous travaillez avec des interfaces dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-16 08:54:02494parcourir

How to Avoid Type Assertions When Working with Interfaces in Go?

Éviter les assertions de type dans la gestion des interfaces

Lorsque vous travaillez avec des interfaces dans Go, il peut devenir fastidieux d'effectuer des assertions de type plusieurs fois, en particulier lorsque l'interface est utilisée à divers endroits au sein d'une fonction. Ce problème pose la question de savoir s'il existe un moyen de créer une fois une variable du type souhaité et de l'utiliser tout au long de la fonction.

La nature typée statiquement de Go et l'absence de génériques rendent impossible l'implémentation directe de la variable souhaitée. solution. Cependant, des approches alternatives existent :

1. Abstraction via l'interface :

Concevez une interface qui encapsule les fonctionnalités communes que vous souhaitez appliquer à différentes structures. Implémentez cette interface dans vos types concrets. L'attribution d'une variable de ce type d'interface aux données éliminera le besoin d'assertions de type ou de commutateurs.

2. Réflexion :

Tirez parti de la réflexion pour accéder à des champs communs identifiés par leurs noms. Bien que cela ne fournisse aucune garantie au moment de la compilation, cela vous permet d'interagir avec les champs de manière dynamique. Pour un exemple, reportez-vous à cette question : "Assert l'interface sur son type."

Remarque : La mise en œuvre de l'approche d'interface est plus efficace et donne un code plus propre. Néanmoins, la réflexion reste une option potentielle dans certains scénarios.

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!

Déclaration:
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