如何将io.Reader转换为io.ReadCloser?

时间:2018-08-29 11:49:33

标签: go

我有一个io.Reader不需要关闭:

stringReader := strings.NewReader("shiny!")

我想将其传递给接收io.ReadCloser的方法

func readAndClose(source io.ReadCloser) {
    ...
}

如何在不专门创建实现io.Reader方法的结构的情况下将io.ReadCloser变成Close

1 个答案:

答案 0 :(得分:12)

如果您确定自己的io.Reader不需要任何实际结帐,则可以用ioutil.NopCloser将其包装起来。

来自godoc:

  

NopCloser返回一个带有非操作Close方法的ReadCloser,该方法包装提供的Reader r。

所以我们可以像这样应用它:

stringReader := strings.NewReader("shiny!")
stringReadCloser := ioutil.NopCloser(stringReader)