源码索引 / CURRENT IMPLEMENTATION
learning/go-patterns/patterns/ownership/resource.go
19 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
跳到函数 / 声明
package ownership
import (
"errors"
"io"
)
// ReadOwned opens one reader, reads its contents, and closes it before returning.
// The returned error preserves both a read failure and a close failure.
func ReadOwned(open func() (io.ReadCloser, error)) (data []byte, err error) {
reader, err := open()
if err != nil {
return nil, err
}
defer func() {
err = errors.Join(err, reader.Close())
}()
return io.ReadAll(reader)
}