在传统的 fmt.Sprintf() 用法中,变量被顺序替换到格式化字符串中。然而,在整个字符串中复制单个变量是可行的。
利用显式参数索引,可以修改格式字符串以引用多个相同的参数times:
val := "foo" s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
格式动词之前的 %[n] 表示法指定要使用的参数的索引。在本例中,%[1] 表示第一个参数 (val) 应用于占位符的所有实例。
执行修改后的 Sprintf:
fmt.Println(s)
产生:
foo in foo is foo
实际上,字符串中的每个变量占位符都是替换为 val 的值,得到所需的复制。
对于第一个参数应一致使用的特定场景,可以省略 %[1] 索引:
fmt.Sprintf("%v in %[1]v is %[1]v", "foo")
此缩写语法简化了格式化字符串,同时仍实现相同的复制功能。
以上是如何使用参数索引在 Go 的 fmt.Sprintf 中重复变量?的详细内容。更多信息请关注PHP中文网其他相关文章!