Maison  >  Article  >  développement back-end  >  Comment transmettre des paramètres variables à Sprintf in Go avec des tranches de chaînes ?

Comment transmettre des paramètres variables à Sprintf in Go avec des tranches de chaînes ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 00:40:02180parcourir

How to Pass Variable Parameters to Sprintf in Go with Slices of Strings?

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!

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