英文:
Is there a way to reuse an argument in fmt.Printf?
问题
我有一个情况,我想要在printf
中重复使用我的参数。
fmt.Printf("%d %d", i, i)
有没有办法告诉fmt.Printf
只重用同一个i
?
fmt.Printf("%d %d", i)
英文:
I have a situation where I want to use my printf
argument twice.
fmt.Printf("%d %d", i, i)
Is there a way to tell fmt.Printf
to just reuse the same i
?
fmt.Printf("%d %d", i)
答案1
得分: 91
你可以使用[n]
表示法来指定显式的参数索引,如下所示:
fmt.Printf("%[1]d %[1]d\n", i)
这里有一个完整的示例供你尝试:http://play.golang.org/p/Sfaai-XgzN
英文:
You can use the [n]
notation to specify explicit argument indexes like so:
fmt.Printf("%[1]d %[1]d\n", i)
Here is a full example you can experiment with: http://play.golang.org/p/Sfaai-XgzN
答案2
得分: 2
另一个选项是text/template:
package main
import (
"strings"
"text/template"
)
func format(s string, v interface{}) string {
t, b := new(template.Template), new(strings.Builder)
template.Must(t.Parse(s)).Execute(b, v)
return b.String()
}
func main() {
i := 999
println(format("{{.}} {{.}}", i))
}
英文:
Another option is text/template:
package main
import (
"strings"
"text/template"
)
func format(s string, v interface{}) string {
t, b := new(template.Template), new(strings.Builder)
template.Must(t.Parse(s)).Execute(b, v)
return b.String()
}
func main() {
i := 999
println(format("{{.}} {{.}}", i))
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论