type StreamReader … func (r StreamReader) Read(dst []byte) (n int, err error) { … } type StreamWriter … func (w StreamWriter) Write(src []byte) (n int, err error) { … } // Close closes the underlying Writer and returns its Close return value, if the Writer // is also an io.Closer. Otherwise it returns nil. func (w StreamWriter) Close() error { … }