Maison >développement back-end >Golang >Comment puis-je créer une fonction d'erreur personnalisée similaire à fmt.Sprintf en utilisant fmt.Errorf ?
Messages d'erreur formatés avec fmt.Errorf
Problème initial :
Vous avez cherché à construire une version personnalisée d'erreurs.New qui met en parallèle les paramètres d'entrée de fmt.Sprintf. Cependant, lorsque vous avez implémenté cette fonction :
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
Vous avez rencontré un problème où « a » est devenu un paramètre de tableau solitaire dans NewError(). Cela a conduit fmt.Sprintf à remplacer de manière inadéquate un seul argument dans votre chaîne de format.
Solution :
L'obstacle que vous avez rencontré provient de l'absence de... (le points de suspension) après le paramètre « a » dans votre déclaration de fonction. Selon la spécification Go, cette omission empêche votre code de gérer correctement le nombre variable d'arguments.
fmt.Errorf à la rescousse
Par hasard, fmt.Errorf est déjà présente la fonctionnalité souhaitée que vous aviez l'intention d'implémenter :
<code class="go">func Errorf(format string, a ...interface{}) error { return errors.New(Sprintf(format, a...)) }</code>
En ajoutant les points de suspension, vous permettez à fmt.Errorf d'interpréter habilement « a » comme un nombre variable d'arguments, répondant habilement aux besoins de votre formaté. messages d'erreur.
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!