【问题标题】:%!B(MISSING) different output between fmt.Printf and log.Println%!B(MISSING) fmt.Printf 和 log.Println 之间的不同输出
【发布时间】:2014-07-30 17:44:47
【问题描述】:

我有一些从json.Marshal 返回的字节。如果像这样将它们记录到标准输出:

log.Println(string(b))

它们的输出如下:

{"encoded":"%2B"}

如果我用

将它们写入磁盘
fmt.Fprintf(w, string(b))

然后 cat 他们已经这样写的文件:

{"encoded":"%!B(MISSING)"}

据我所知,string(b) 的输出确实是第一个,也是我预期的输出。我究竟做错了什么?

【问题讨论】:

    标签: go


    【解决方案1】:

    Fprintf 将格式定义作为第一个参数。 "%2B" 被解释为格式化指令,您缺少以下参数。

    也许您想使用Fprint

    【讨论】:

    • 在此页面 (golang.org/doc/articles/wiki) 中,他们显示以下代码 sn-p:fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])。这就是我使用它的原因。但是,是的,谢谢。添加 "%s" 作为第二个参数或使用 Fprint 可以解决问题。
    猜你喜欢
    • 2022-01-19
    • 2012-06-29
    • 1970-01-01
    • 2017-04-15
    • 2015-06-20
    • 2015-10-23
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    相关资源
    最近更新 更多