Passer des paramètres variables à Sprintf dans Go
Lorsque vous travaillez avec un grand nombre de paramètres, les transmettre manuellement à Sprintf peut être fastidieux. Heureusement, il existe un moyen de simplifier ce processus.
Problème :
Tenter de transmettre une tranche de chaînes ([]string) directement à Sprintf entraîne une erreur :
cannot use v (type []string) as type []interface {} in argument to fmt.Printf
Solution :
Pour résoudre cette erreur, déclarez la tranche comme type de []interface{} au lieu de []string. Sprintf attend un tableau de paramètres d'interface{}, comme le montre sa signature :
func Printf(format string, a ...interface{}) (n int, err error)
Exemple :
s := []interface{}{"a", "b", "c", "d"} fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3]) v := s[1:] fmt.Printf("%5s %4s %3s\n", v...)
Sortie (Go Playground) :
b c d b c d
Remarque :
[]interface{} et []string ne sont pas interchangeables. Si vous disposez d'une []chaîne existante, vous pouvez la convertir manuellement en []interface{} comme suit :
ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }
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!