Pour implémenter une version d'erreurs.Nouveau qui accepte les mêmes paramètres que fmt.Sprintf, on peut utiliser la fonction NewError, qui est définie comme suit :
func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }
Cependant, cette fonction ne fonctionne pas correctement car le nombre variable d'arguments dans a devient un paramètre de tableau unique dans NewError, ce qui oblige Sprintf à ne remplir qu'un seul paramètre dans la chaîne de format.
Pour résoudre ce problème, le paramètre final dans NewError doit être marqué comme un nombre variable d'arguments avec la syntaxe ... :
func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }
Cela permet à fmt.Sprintf d'interpréter a comme un nombre variable de arguments.
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!