英文:
%!B(MISSING) different output between fmt.Printf and log.Println
问题
我从json.Marshal
返回了一些字节。如果像这样将它们记录到标准输出:
log.Println(string(b))
它们的输出如下:
{"encoded":"%2B"}
如果我使用以下方式将它们写入磁盘:
fmt.Fprintf(w, string(b))
然后像这样查看已写入的文件:
cat 文件名
它们的输出变成了:
{"encoded":"%!B(MISSING)"}
据我所知,string(b)
的输出确实是第一个也是我期望的输出。我做错了什么?
英文:
I have some bytes returned from json.Marshal
. If log them to stdout like this:
log.Println(string(b))
They are output like this:
{"encoded":"%2B"}
If I write them to disk with
fmt.Fprintf(w, string(b))
And then cat the file they have been written like this:
{"encoded":"%!B(MISSING)"}
As far as I can tell the output of string(b)
really is the first, and my expected, output. What am I doing wrong?
答案1
得分: 5
Fprintf的第一个参数是格式定义。"%2B"
被解释为格式化指令,但你缺少了后续的参数。
也许你想使用Fprint?
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论