Référencer le même paramètre plusieurs fois dans des chaînes au format fmt.Sprintf
Dans l'extrait de code donné, vous avez une fonction qui génère des commandes SQL pour créer des tables en utilisant fmt.Sprintf. Bien que l'approche originale soit verbeuse, vous désirez un moyen de référencer le paramètre v une seule fois pour un meilleur formatage de la chaîne.
Selon la documentation de fmt.Sprintf :
Dans Printf, Sprintf et Fprintf, le comportement par défaut est que chaque verbe de formatage formate les arguments successifs passés dans l'appel. Cependant, la notation [n] juste avant le verbe indique que le nième argument indexé doit être formaté à la place.
Cela signifie que vous pouvez transmettre la variable v une fois et utiliser le Notation [n] pour spécifier l'index d'argument à formater. Par exemple, votre fonction mise à jour peut être :
func getTableCreationCommands(v string) string { return fmt.Sprintf(` CREATE TABLE share_%[1]v PARTITION OF share FOR VALUES IN (%[1]v); CREATE TABLE nearby_%[1]v PARTITION OF nearby FOR VALUES IN (%[1]v); `, v) }
Ici, %[1]v indique au formateur d'utiliser le premier argument, qui est v, deux fois.
Pour utiliser cette fonction :
import "fmt" func main() { s := "X" fmt.Println(getTableCreationCommands(s)) }
Sortie :
CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X); CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
Cette approche fournit un moyen plus propre et plus concis de formater vos commandes SQL avec plusieurs références au même paramètre.
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!