是否可以使用fmt.Sprintf()
相同的值替换格式化字符串中的所有变量?
就像是:
val := "foo"
s := fmt.Sprintf("%v in %v is %v", val)
会回来的
"foo in foo is foo"
有可能,但是必须修改格式字符串,必须使用 显式参数索引 :
显式参数索引:
在Printf,Sprintf和Fprintf中,默认行为是为每个格式化动词格式化在调用中传递的连续参数。但是,动词前的符号[n]表示第n个单索引参数将被格式化。宽度或精度的’*’之前的相同符号选择保存该值的参数索引。在处理了带括号的表达式[n]后,除非另外指出,否则后续动词将使用自变量n
+ 1,n + 2等。
你的例子:
val := "foo"
s := fmt.Sprintf("%[1]v in %[1]v is %[1]v", val)
fmt.Println(s)
输出(在Go Playground上尝试):
foo in foo is foo
当然,上面的示例可以简单地写成一行:
fmt.Printf("%[1]v in %[1]v is %[1]v", "foo")
另外,为简化起见,第一个显式参数索引可能会省略,因为它默认为1
:
fmt.Printf("%v in %[1]v is %[1]v", "foo")
如何用updateNum变量替换price的值(存储在number变量中)。 如果我在价格值下面的代码没有更新之后打印数据框架,但是如果我打印updateNum变量,它将显示正确更新的变量。
问题内容: 如果我从脚本运行以下命令: 没事。 但是,如果我运行: 我在教程中读到,要从shell替换环境变量,您需要先停止操作,然后对部分进行“引用”,以便不直接替换该部分,这是我所做的,并且仅当该变量在紧接之前定义时才起作用。 我如何被s识别为shell中定义的环境变量? 问题答案: 您的两个示例看起来相同,这使问题难以诊断。潜在问题: 您可能需要双引号,例如 可能包含一个斜杠,在这种情况下,
功能文件-1 场景大纲:Lambda API注册 给定url ApiAdminURL 功能文件-2 给定url internalGateway 和路径 这不是将#(LocalVersion)替换为v1
问题内容: 我怎样才能做到这一点? 它将替换为文本。但是我想用变量的内容替换它。 我尝试过 它也不起作用。 问题答案: 您需要使用双引号: 您的单引号可防止将shell变量替换为其内容。
有没有办法做到这一点?
我正在尝试配置Wiremock映射,以从请求中返回一个带有值的JSON响应。 请求很简单 它的映射是: 我收到回复: 而预期的是: 如果我切换到XML请求,模式