Problème de transmission d'arguments de fonction variadique dans le wrapper fmt.Fprintf
Cet article résout un problème rencontré lors de la création d'un simple wrapper fmt.Fprintf qui accepte un nombre variable d'arguments.
Problème : sortie incorrecte lors de l'appel de Wrapper
Lors de l'appel de la fonction wrapper Die("foo"), une sortie inattendue est produite : "foo%!(EXTRA []interface {}=[])". Cela soulève deux questions :
Solution : Utilisation de l'opérateur Spread
Les fonctions variadiques dans Go reçoivent des arguments sous forme de tranche. Dans ce cas, la fonction wrapper Die a un paramètre args de type []interface{}. Cependant, lors de la transmission de cet argument à fmt.Sprintf, il est traité comme un argument unique de type []interface{}.
Pour résoudre ce problème et transmettre chaque valeur dans args en tant qu'argument distinct, l'opérateur de propagation (...) doit être utilisé. En ajoutant cette syntaxe à l'appel fmt.Sprintf, les valeurs individuelles dans args sont développées et transmises en conséquence :
str := fmt.Sprintf(format, args...)
Cette approche garantit que la fonction wrapper transmet correctement les arguments de la variable à fmt.Fprintf.
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!