Go 使fmt.sprintf不替换变量中的%s

Go 使fmt.sprintf不替换变量中的%s,go,Go,如果我想做以下事情: a := "%shello%s" b:= fmt.Sprintf("%sWorld",a) fmt.Printf(b) 我想打印 %shello%sWorld ie%s仅在%s中被替换 我该怎么做 我不想用%%shello%%s替换a 这很好,结果是字符串为%shello%sWorld 问题在于如何打印它: fmt.Printf(b) 将b视为格式字符串,并且由于b的值包含%s,这要求您也传递未传递的参数,因此实际输出包含错误消息 而是用以下

如果我想做以下事情:

    a := "%shello%s"
    b:= fmt.Sprintf("%sWorld",a)
    fmt.Printf(b)
我想打印

 %shello%sWorld
ie%s仅在%s中被替换

我该怎么做

我不想用%%shello%%s替换a

这很好,结果是字符串为%shello%sWorld

问题在于如何打印它:

fmt.Printf(b)
将b视为格式字符串,并且由于b的值包含%s,这要求您也传递未传递的参数,因此实际输出包含错误消息

而是用以下内容打印:

输出将在以下服务器上试用:


自1970年1月1日C程序员开始使用printfs而不是printf%s,s或putss。在Go中,您可以使用os.Stdout.WriteStringb。@jibin mathews,请注意fmt中函数的命名模式:它们的命名方式类似于[f | s]print[f | ln]modulo title character case;根动词显然是print,前缀(如果存在)指示结果输出的位置:当它是f时表示文件,当它是字符串时表示字符串;如果没有前缀,则输出是正在运行的进程的标准输出流。后缀(如果存在)控制输入的处理:f代表格式化,表示第一个参数字符串不是逐字提取,而是扫描特定占位符……ln表示行,并确保输出以换行符结尾的完整行。扫描函数族的命名基本上遵循相同的模式。总之,高度建议考虑go doc fmt。
fmt.Printf(b)
fmt.Println(b)
%shello%sWorld