首页 >后端开发 >Golang >如何在 fmt.Sprintf 格式字符串中多次引用相同的参数?

如何在 fmt.Sprintf 格式字符串中多次引用相同的参数?

Susan Sarandon
Susan Sarandon原创
2024-11-07 16:38:02812浏览

How to Reference the Same Parameter Multiple Times in fmt.Sprintf Format Strings?

在 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn