本文介绍了用相同的变量替换Sprintf中的所有变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

限时删除!!

是否可以使用 fmt.Sprintf()来替换具有相同值的格式化字符串中的所有变量?



类似于:

  val:=foo
s:= fmt.Sprintf(%v in %v是%v,val)

会返回

 foo in foo is foo


解决方案

这是可能的,但格式字符串必须修改,您必须使用:
$ b

您的示例:

  val:=foo
s:= fmt.Sprintf(%[1] v在%[1] v是%[1] v,val)
fmt.Println(s)

输出(在上试用):

  foo在foo中是foo 




$ $ $ $ $ $ $ $ $ $ $ %[1] v是%[1] v,foo)

简化,第一个显式参数索引可以省略,因为它默认为 1

  fmt.Printf(%v in%[1] v is%[1] v,foo)


Is it possible using fmt.Sprintf() to replace all variables in the formatted string with the same value?

Something like:

val := "foo"
s := fmt.Sprintf("%v in %v is %v", val)

which would return

"foo in foo is foo"
解决方案

It's possible, but the format string must be modified, you must use explicit argument indicies:

Your example:

val := "foo"
s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
fmt.Println(s)

Output (try it on the Go Playground):

foo in foo is foo

Of course the above example can simply be written in one line:

fmt.Printf("%[1]v in %[1]v is %[1]v", "foo")

Also as a minor simplification, the first explicit argument index may be omitted as it defaults to 1:

fmt.Printf("%v in %[1]v is %[1]v", "foo")

这篇关于用相同的变量替换Sprintf中的所有变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

1403页,肝出来的..

09-07 02:21