我有一个不需要关闭的io.Reader
:
stringReader := strings.NewReader("shiny!")
我想把它传递给一个接收io.ReadCloser
的方法
func readAndClose(source io.ReadCloser) {
...
}
如何在不专门创建实现Close
方法的结构的情况下将io.Reader
转换为io.ReadCloser
?
如果您确定您的io.Reader
不需要任何实际关闭,则可以用ioutil.NopCloser
将其包装。
Go 1.16 更新
从版本 1.16 开始,ioutil.NopCloser
已弃用。
NopCloser
已移至io
:
stringReader := strings.NewReader("shiny!")
stringReadCloser := io.NopCloser(stringReader)
Go 1.15 及更早
版本来自戈多克:
NopCloseer返回一个ReadClose,其中包含一个无操作关闭方法包装提供的Reader r。
因此,我们可以像以下方式应用它:
stringReader := strings.NewReader("shiny!")
stringReadCloser := ioutil.NopCloser(stringReader)