The io.Reader interface
The io.Reader
interface, as shown in the following listing, is simple. It consists of a single method, Read([]byte)(int, error)
, intended to let programmers implement code that reads data, from an arbitrary source, and transfers it into the provided slice of bytes.
type Reader interface { Read(p []byte) (n int, err error) }
The Read
method returns the total number of bytes transferred into the provided slice and an error value (if necessary). As a guideline, implementations of the io.Reader
should return an error value of io.EOF
when the reader has no more data to transfer into stream p
. The following shows the type alphaReader
, a trivial implementation of the io.Reader
that filters out non-alpha characters from its string source:
type alphaReader string func (a alphaReader) Read(p []byte) (int, error) { count := 0 for i := 0; i < len(a); i++ { if (a[i] >= 'A' && a[i] <= 'Z') |...