Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go io.ReadCloser的使用_Go_Io - Fatal编程技术网

Go io.ReadCloser的使用

Go io.ReadCloser的使用,go,io,Go,Io,请有人解释或/和分享应在何时以及为什么显式关闭读卡器的示例,即实现io.ReadCloser,而不仅仅是io.Reader。例如,当您处理文件或任何应关闭以释放分配的资源或内存的资源时,例如为您的资源,例如,从Go调用C代码。 您可以在拥有Read和Close方法时使用它,该示例显示您可以使用一个通用函数来使用io处理不同的类型。ReadCloser: 运行并输入12345作为输入,输出: pack 12345 1234 另见: 这是为了明确定义阅读器和更紧密的界面。假设您编写了一些读取数据的

请有人解释或/和分享应在何时以及为什么显式关闭读卡器的示例,即实现io.ReadCloser,而不仅仅是io.Reader。

例如,当您处理文件或任何应关闭以释放分配的资源或内存的资源时,例如为您的资源,例如,从Go调用C代码。 您可以在拥有Read和Close方法时使用它,该示例显示您可以使用一个通用函数来使用io处理不同的类型。ReadCloser:

运行并输入12345作为输入,输出:

pack
12345
1234
另见:

这是为了明确定义阅读器和更紧密的界面。假设您编写了一些读取数据的功能,但您还希望在再次这样做之后关闭资源,以避免泄漏描述符

func ...(r io.ReaderCloser) {
    defer r.Close()
    ... // some reading
}

您传入的任何内容都需要定义两个接口,即os.File或任何自定义结构。在这种情况下,您将强制API的客户端定义读取和关闭接口实现,而不仅仅是io.Reader。

任何时候您都需要关闭读卡器。
func ...(r io.ReaderCloser) {
    defer r.Close()
    ... // some reading
}