Maison  >  Article  >  développement back-end  >  Comment préserver l’intégrité des arguments dans les erreurs formatées ?

Comment préserver l’intégrité des arguments dans les erreurs formatées ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-05 05:04:01491parcourir

How to Preserve Argument Integrity in Formatted Errors?

Préserver l'intégrité de plusieurs arguments dans les erreurs formatées

Pour implémenter une version personnalisée des erreurs. Nouveau qui permet le formatage des arguments variables, nous sommes confrontés à un défi technique. Comme le montre le code fourni :

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}</code>

Le paramètre ...a fusionne involontairement en un seul tableau lors de l'invocation de la méthode, ce qui entraîne un formatage incorrect. La solution réside dans l'émulation de la fonctionnalité de fmt.Errorf, comme le montre son code source :

<code class="go">func Errorf(format string, a ...interface{}) error {
    return errors.New(Sprintf(format, a...))
}</code>

Remarquez que l'opérateur ... suit a après la liste des paramètres. Dans Go, cette syntaxe permet de transmettre des arguments sous forme de valeurs distinctes plutôt que sous forme d'un seul tableau fusionné. La spécification décrit ce comportement :

Si l'argument final est attribuable à un type de tranche []T, il peut être transmis inchangé comme valeur d'un paramètre ...T si l'argument est suivi de... .

En incorporant l'opérateur ... comme vu dans fmt.Errorf, nous garantissons que plusieurs arguments conservent leur individualité lors du formatage, ce qui entraîne le comportement souhaité :

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a...))
}</code>

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