如何将 io.Reader 变成 io.ReadCloser? [复制]
Posted
技术标签:
【中文标题】如何将 io.Reader 变成 io.ReadCloser? [复制]【英文标题】:How do I turn an io.Reader into a io.ReadCloser? [duplicate] 【发布时间】:2019-02-04 04:50:18 【问题描述】:我有一个不需要关闭的io.Reader
:
stringReader := strings.NewReader("shiny!")
我想将它传递给接收io.ReadCloser
的方法
func readAndClose(source io.ReadCloser)
...
如何在不专门创建实现Close
方法的结构的情况下将io.Reader
转换为io.ReadCloser
?
【问题讨论】:
仅供参考:这个问题已被标记为重复,但它实际上是一个不同的问题。虽然这两个问题的答案是相同的,但这并不是将问题标记为重复的理由。 ;-) 【参考方案1】:如果您确定您的 io.Reader
不需要任何实际关闭,您可以用 ioutil.NopCloser
包裹它。
Go 1.16 更新
截至 1.16 版,ioutil.NopCloser
为 deprecated。
NopCloser
已移至io
:
stringReader := strings.NewReader("shiny!")
stringReadCloser := io.NopCloser(stringReader)
转到 1.15 及更早版本
来自 godoc:
NopCloser 返回一个 ReadCloser,其中包含包装提供的 Reader r 的无操作 Close 方法。
所以我们可以像这样应用它:
stringReader := strings.NewReader("shiny!")
stringReadCloser := ioutil.NopCloser(stringReader)
【讨论】:
以上是我的问题,我在 *** 中找不到答案。我发现它隐藏在一些论坛帖子中,我认为分享它可能会很好。 “回答您自己的问题”复选框确实说明“分享您的知识,问答式”。这有什么不诚实的? @Adrian 作为已经在 SO 工作了 10 年的人,您应该知道这个社区非常适合回答您自己的问题。 搜索reader readcloser
的第一个结果:***.com/questions/28158990/golang-io-ioutil-nopcloser
一切都已经在互联网上不止一次之前 SO。随它吧。万岁关闭重复。万岁重复。谢谢,@noamt
没有iotuil
的方法是什么?从 1.16 golang 开始,它已被弃用以上是关于如何将 io.Reader 变成 io.ReadCloser? [复制]的主要内容,如果未能解决你的问题,请参考以下文章