Passer des paramètres de variable à Sprintf dans Go
Dans Go, la fonction Sprintf s'attend à ce que ses arguments variables soient de type []interface{} . Cela peut constituer une limitation lorsque vous travaillez avec des tranches d'autres types, telles que []string.
Considérez le code suivant, qui tente de transmettre une tranche de chaînes à Sprintf :
<code class="go">s := []string{"a", "b", "c", "d"} fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3])</code>
L'exécution de ce code entraînera l'erreur suivante :
cannot use v (type []string) as type []interface {} in argument to fmt.Printf
Pour résoudre cette erreur, la tranche doit être convertie en type []interface{}. Cela peut être fait manuellement, comme indiqué ci-dessous :
<code class="go">ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }</code>
Alternativement, une tranche de chaînes peut être déclarée comme []interface{} dès le début :
<code class="go">is := []interface{}{"a", "b", "c"}</code>
Avec la tranche converti au type correct, Sprintf peut maintenant être utilisé pour formater les arguments de la variable :
<code class="go">fmt.Printf("%5s %4s %3s\n", is[1], is[2], is[3])</code>
Sortie :
b c d
En convertissant la tranche de chaînes en []interface{}, il devient possible de transmettre facilement plusieurs arguments à Sprintf.
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!