如果我想执行以下操作:
a := "%shello%s"
b:= fmt.Sprintf("%sWorld",a)
fmt.Printf(b)
我要打印
%shello%sWorld
即%s仅在%sWorld中被替换。
我该怎么做?
我不想用%%shello%%s
答案 0 :(得分:6)
a := "%shello%s"
b:= fmt.Sprintf("%sWorld",a)
这很好用,它导致字符串为"%shello%sWorld"
。
问题在于您的打印方式:
fmt.Printf(b)
fmt.Printf()
将b
视为格式字符串,并且由于b
的值包含%s
,因此希望您也传递参数(您没有),因此实际输出包含错误消息。
改为使用fmt.Println()
打印它:
fmt.Println(b)
输出将是(在Go Playground上尝试):
%shello%sWorld