我有一个io.Reader
不需要关闭:
stringReader := strings.NewReader("shiny!")
我想将其传递给接收io.ReadCloser
的方法
func readAndClose(source io.ReadCloser) {
...
}
如何在不专门创建实现io.Reader
方法的结构的情况下将io.ReadCloser
变成Close
?
答案 0 :(得分:12)
如果您确定自己的io.Reader
不需要任何实际结帐,则可以用ioutil.NopCloser
将其包装起来。
来自godoc:
NopCloser返回一个带有非操作Close方法的ReadCloser,该方法包装提供的Reader r。
所以我们可以像这样应用它:
stringReader := strings.NewReader("shiny!")
stringReadCloser := ioutil.NopCloser(stringReader)