在 fmt.Sprintf 格式字符串中多次引用相同的参数
在给定的代码片段中,您有一个生成 SQL 命令的函数使用 fmt.Sprintf 创建表。虽然原始方法很冗长,但您需要一种仅引用 v 参数一次的方法,以获得更好的字符串格式。
根据 fmt.Sprintf 的文档:
在 Printf、Sprintf 和Fprintf,默认行为是每个格式化动词格式化调用中传递的连续参数。然而,动词前面的符号 [n] 表示第 n 个单索引参数将被格式化。
这意味着您可以传递 v 变量一次并使用[n] 表示法指定要格式化的参数索引。例如,您更新的函数可以是:
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) }
这里,%[1]v 告诉格式化程序使用第一个参数,即 v,两次。
要使用此函数:
import "fmt" func main() { s := "X" fmt.Println(getTableCreationCommands(s)) }
输出:
CREATE TABLE share_X PARTITION OF share FOR VALUES IN (X); CREATE TABLE nearby_X PARTITION OF nearby FOR VALUES IN (X);
这种方法提供了一种更干净、更简洁的方式通过对同一参数的多个引用来格式化 SQL 命令。
以上是如何在 fmt.Sprintf 格式字符串中多次引用相同的参数?的详细内容。更多信息请关注PHP中文网其他相关文章!