Gestion des erreurs génériques avec la fonction Must
Lorsque vous travaillez avec des fonctions qui renvoient à la fois une valeur et une erreur, la gestion des erreurs peut être fastidieuse. Le manque de génériques dans Go rend difficile le développement d'une solution qui fonctionne pour tous les scénarios possibles.
L'exemple fourni tente de créer une fonction nommée P qui encapsule une telle fonction, échouant si une erreur se produit. Bien qu'efficace dans la gestion des erreurs, il perd les informations de type, ce qui entraîne une interface vide.
Une solution potentielle consiste à utiliser des techniques de génération de code pour créer des implémentations spécifiques de P pour chaque type concret avec lequel vous devez travailler. En utilisant une bibliothèque comme "gengen", "genny" ou "gen", vous pouvez générer des instances personnalisées de P qui conservent les informations de type appropriées.
Par exemple, si votre fonction renvoie un entier et une erreur :
<code class="go">func MyFunction() (int, error) { ... }</code>
À l'aide d'un générateur de code, vous pouvez créer une implémentation spécifique de P pour cette fonction :
<code class="go">func P_MyFunction(any interface{}, err error) (int) { if err != nil { panic("error: "+ err.Error()) } return any.(int) }</code>
Cette approche garantit que les informations de type sont conservées, vous permettant d'appeler P_MyFunction et travaillez de manière transparente avec l'entier renvoyé. Cependant, cela nécessite de générer une implémentation spécifique pour chaque combinaison de fonctions et de types, ce qui peut être fastidieux si vous disposez de nombreuses fonctions de ce type.
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!