go - %!B(MISSING) fmt.Printf 和 log.Println 之间的不同输出

标签 go

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

log.Println(string(b))

它们是这样输出的:

{"encoded":"%2B"}

如果我用

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

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

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

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

最佳答案

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

也许您想使用 Fprint

关于go - %!B(MISSING) fmt.Printf 和 log.Println 之间的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25033412/

相关文章:

json - 从API的json响应中检索数据

go - 如何在 Go 中使用来自常量字符串变量的嵌套模板?

google-app-engine - 由于版本 google.golang.org/appengine 已过时,如何导入 Golang Appengine 的 github 版本?

vim - 在 Vim 中隐藏制表符

function - 如何在 Golang 中访问另一个包的私有(private)函数?

api - 如何使用相同的端口地址和不同的句柄模式同时提供网页和 API 路由

go - 'go.tools' 的权限被拒绝错误

go - 使用 Go 模块在包中组织本地代码

pointers - 简单的 Go 指针解释

javascript - 长轮询, "Global"按钮,向所有人广播?