mirror of
https://github.com/golang/go
synced 2024-09-05 07:54:46 +00:00
io: add ReadAtSizer interface
ReadAtSizer is a common abstraction for a stateless, concurrently-readable fixed number of bytes. This interface has existed in various codebases for over 3 years (previously usually named SizeReaderAt). It is used inside Google in dl.google.com (mentioned in https://talks.golang.org/2013/oscon-dl.slide) and other packages. It is used in Camlistore, in Juju, in the Google API Go client, in github.com/nightlyone/views, and 33 other pages of Github search results. It is implemented by io.SectionReader, bytes.Reader, strings.Reader, etc. Time to finally promote this interface to the standard library and give it a standard name, blessing it as best practice. Updates #7263 Updates #14889 Change-Id: Id28c0cafa7d2d37e8887c54708b5daf1b11c83ea Reviewed-on: https://go-review.googlesource.com/21492 Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
parent
34c58065e5
commit
7f39f21c7b
|
@ -274,6 +274,15 @@ type RuneScanner interface {
|
|||
UnreadRune() error
|
||||
}
|
||||
|
||||
// ReadAtSizer is the interface that groups the basic ReadAt and Size
|
||||
// methods, representing a sized data source that supports random
|
||||
// access by multiple concurrent goroutines.
|
||||
type ReadAtSizer interface {
|
||||
ReaderAt
|
||||
// Size reports the length of the data source in bytes.
|
||||
Size() int64
|
||||
}
|
||||
|
||||
// stringWriter is the interface that wraps the WriteString method.
|
||||
type stringWriter interface {
|
||||
WriteString(s string) (n int, err error)
|
||||
|
|
Loading…
Reference in a new issue