gpt4 book ai didi

go - io.ReadCloser 的使用

转载 作者:行者123 更新时间:2023-12-05 00:45:19 52 4
gpt4 key购买 nike

有人可以解释(或/和分享示例)何时以及为什么应该明确关闭读者,即实现 io.ReadCloser,而不仅仅是 io.Reader。

最佳答案

例如,当您使用文件或任何应关闭以释放分配的资源(或内存,例如为您的资源,例如从 Go 调用的 C 代码)的资源时)。
当你有 ReadClose 方法时,你可以使用它,一个例子表明你可以使用一个通用函数来处理不同的类型,使用 io.ReadCloser:

package main

import (
"fmt"
"io"
"log"
"os"
)

func main() {
f, err := os.Open("./main.go")
if err != nil {
log.Fatal(err)
}
doIt(f)
doIt(os.Stdin)
}
func doIt(rc io.ReadCloser) {
defer rc.Close()
buf := make([]byte, 4)
n, err := rc.Read(buf)
if err != nil {
log.Fatal(err)
}
fmt.Printf("%s\n", buf[:n])
}

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

pack
12345
1234

另见:
Does Go automatically close resources if not explicitly closed?

关于go - io.ReadCloser 的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64166575/

52 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com