登录
首页 >  Golang >  Go问答

Go 有一种类似于 io.Readers 的格式说明符吗?

来源:stackoverflow

时间:2024-02-10 21:00:26 408浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《Go 有一种类似于 io.Readers 的格式说明符吗?》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

我想要的是这样的:

r := strings.NewReader("fee fi fo fum")
fmt.Printf("%r\n", r)

其中 %r 是从 io.reader 读取的格式说明符。我在 fmt 文档 https://pkg.go.dev/fmt 中没有看到类似的内容,但我可能错过了。


正确答案


io.reader 可能是一个永远不会结束的流,因此 fmt.printf 渲染可能永远不会完成。

如果您知道会有一个离散的有效负载并且它不是太大,您可以将内容加载到内存中:

r := strings.newreader("fee fi fo fum")
b, _ := io.readall(r)
fmt.printf("%q\n", b)

https://go.dev/play/p/DZybA_f6Ole

这会将读取器当前位置移动到末尾,因此如果您需要在将来的调用中“重播”读取器,则需要使用另一个 io.reader (例如 bytes.buffer)来保存原始内容:

r := strings.NewReader("fee fi fo fum")

if debug {
    var b bytes.Buffer
    _, err = io.Copy(&b, r) // handle err

    log.Printf("io.Reader content: %q\n", b.String())

    r = &b // replay
}

// r io.Reader content and position preserved

https://go.dev/play/p/JRS34uX1R1G

本篇关于《Go 有一种类似于 io.Readers 的格式说明符吗?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>