使用 Sprintf 复制格式化字符串中的变量值
在 Go 中,fmt.Sprintf() 允许使用占位符格式化字符串,这些占位符是替换为提供的值。虽然它通常为每个占位符分配一个唯一的值,但通常需要用同一变量替换所有占位符。
显式参数索引
要实现此目的,fmt.Sprintf () 使用显式参数索引。在格式字符串中,将 [n] 放在格式化动词之前可确保对第 n 个参数(从 1 开始索引)进行格式化,而不是默认的升序序列。同样,放在 * 之前表示宽度或精度的 [n] 表示保存指定值的参数。
示例用法
考虑问题中提供的示例:
val := "foo" s := fmt.Sprintf("%v in %v is %v", val)
要在所有占位符之间复制 val 变量,请将格式字符串修改为如下所示:
s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
这会产生所需的输出:
"foo in foo is foo"
简化符号
请注意,第一个显式参数索引可以是省略,因为它默认为1:
s := fmt.Sprintf("%v in %[1]v is %[1]v", val)
结论
通过利用显式参数索引,fmt.Sprintf() 可用于以格式化格式在所有占位符之间复制单个变量值string,针对特定场景提供简洁高效的解决方案。
以上是如何在 Go 的 fmt.Sprintf() 中的多个占位符中重复单个变量?的详细内容。更多信息请关注PHP中文网其他相关文章!