Fonction de gestion des erreurs génériques sans génériques
Dans Go, l'absence de génériques pose des défis lorsque l'on travaille avec la gestion des erreurs. Considérons l'exemple suivant :
<code class="go">func P(any interface{}, err error) (interface{}) { if err != nil { panic("error: "+ err.Error()) } return any }</code>
L'intention de cette fonction est d'échouer en cas d'erreur et d'encapsuler toute fonction qui renvoie une valeur et une erreur. Bien qu'il fonctionne fonctionnellement, le type any perd ses informations de type, ce qui entraîne une interface vide dans la valeur de retour.
Pour résoudre ce problème, une solution potentielle consiste à générer des implémentations distinctes de la fonction P() pour chaque type de béton requis. Cette approche vous permet d'utiliser le type correct au lieu de interface{}, ce qui facilite le travail avec des fonctions de bibliothèque externes.
Plusieurs bibliothèques et outils existent pour générer dynamiquement de telles fonctions. Voici quelques exemples notables :
En utilisant ces outils, vous pouvez créer des versions spécifiques au type du Fonction P(), préservant les informations de type et simplifiant l'intégration avec les fonctions de la bibliothèque.
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!