首页 >后端开发 >Golang >如何在 Go 的 fmt.Sprintf() 中的多个占位符中重复单个变量?

如何在 Go 的 fmt.Sprintf() 中的多个占位符中重复单个变量?

Susan Sarandon
Susan Sarandon原创
2024-12-21 12:53:21826浏览

How Can I Repeat a Single Variable Across Multiple Placeholders in Go's fmt.Sprintf()?

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

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