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

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

DDD
DDDoriginal
2024-11-04 11:40:02890parcourir

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

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!

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