PPysolate SpineREAD THE CODE · UNDERSTAND THE SYSTEM
课程与章节
源码索引 / 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)
}