首页  >  文章  >  后端开发  >  如何在 Go fmt.Sprintf 格式字符串中多次重复使用相同的参数?

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

DDD
DDD原创
2024-11-07 05:55:03804浏览

How Can I Reuse the Same Parameter Multiple Times in a Go fmt.Sprintf Format String?

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

在 Go 中,fmt 包提供了一种便捷的方法使用 Sprintf 函数格式化字符串。但是,在格式字符串中多次指定相同的参数可能会很麻烦。

考虑以下示例:

func getTableCreationCommands(v string) string {
    return `
        CREATE TABLE share_` + v + ` PARTITION OF share FOR VALUES IN (` + v + `);
        CREATE TABLE nearby_` + v + ` PARTITION OF nearby FOR VALUES IN (` + v + `);
    `
}

这里,我们必须将参数 'v' 重复四次创建 SQL 命令的时间。我们可以使用显式参数索引在格式字符串中多次引用同一参数,而不是这种冗长的方法。

import "fmt"

func getTableCreationCommands(s 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);
    `, s)
}

func main() {
    fmt.Println(getTableCreationCommands("X"))
}

在此修改后的函数中,我们将参数索引 [1] 括在方括号内在格式化动词 (%v) 之前,表明我们要使用传递给 Sprintf 的第一个参数,在本例中是字符串“X”。此代码片段的 Playground 链接是 https://play.golang.org/p/fKV3iviuwll。

使用显式参数索引允许我们仅传递参数一次,并根据需要在格式字符串中引用它,从而产生以更简洁和可读的实现方式。

以上是如何在 Go fmt.Sprintf 格式字符串中多次重复使用相同的参数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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