Passer des paramètres de variable à Sprintf dans Go
Pour éviter la tâche fastidieuse de spécifier chaque variable individuellement dans la fonction Sprintf, on peut exploiter un technique qui permet de transmettre plusieurs paramètres en tant qu'entité unique. Cette approche aborde les scénarios dans lesquels un nombre important de paramètres sont requis, comme illustré dans la question.
La clé de cette technique réside dans la déclaration de la tranche v comme []interface{} plutôt que []string. La fonction Sprintf s'attend à ce que ses arguments soient de type []interface{}, comme indiqué dans sa signature :
<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>
En convertissant v en []interface{}, elle s'aligne sur l'attente de la fonction :
<code class="go">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...)</code>
Cette approche génère la sortie souhaitée sans l'erreur « impossible d'utiliser v (type []string) comme type []interface {} dans l'argument de fmt.Printf ».
Tandis que [] interface{} et []string ne sont pas convertibles, il est possible de convertir manuellement une []string en []interface{} si nécessaire :
<code class="go">ss := []string{"a", "b", "c"} is := make([]interface{}, len(ss)) for i, v := range ss { is[i] = v }</code>
En suivant ces techniques, les développeurs peuvent facilement passer des paramètres variables à Sprintf, rendant leur code plus efficace et réduisant le passe-partout associé à la spécification de variables individuelles.
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!