Go %!B(缺少)fmt.Printf和log.Println之间的不同输出
我从Go %!B(缺少)fmt.Printf和log.Println之间的不同输出,go,Go,我从json.Marshal返回了一些字节。如果像这样将它们记录到标准输出: log.Println(string(b)) {"encoded":"%2B"} {"encoded":"%!B(MISSING)"} 它们的输出如下所示: log.Println(string(b)) {"encoded":"%2B"} {"encoded":"%!B(MISSING)"} 如果我用 fmt.Fprintf(w, string(b)) 然后对文件进行分类,它们是这样写的: log.Pri
json.Marshal
返回了一些字节。如果像这样将它们记录到标准输出:
log.Println(string(b))
{"encoded":"%2B"}
{"encoded":"%!B(MISSING)"}
它们的输出如下所示:
log.Println(string(b))
{"encoded":"%2B"}
{"encoded":"%!B(MISSING)"}
如果我用
fmt.Fprintf(w, string(b))
然后对文件进行分类,它们是这样写的:
log.Println(string(b))
{"encoded":"%2B"}
{"encoded":"%!B(MISSING)"}
据我所知,string(b)
的输出实际上是第一个也是我期望的输出。我做错了什么 将格式定义作为第一个参数。“%2B”
被解释为格式化指令,您缺少以下参数
可能您想在此页()中使用?它们显示以下代码片段:fmt.Fprintf(w,“您好,我爱%s!”,r.URL.Path[1:])
。这就是我使用它的原因。但是是的,谢谢你。添加一个“%s”
作为第二个参数或使用Fprint可以解决此问题。