Maison > développement back-end > Golang > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-05 05:04:01
original
550 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal