// +build ignore,OMIT package main import ( "fmt" "io" "log" ) // ByteReader implements an io.Reader that emits a stream of its byte value. type ByteReader byte func (b ByteReader) Read(buf []byte) (int, error) { for i := range buf { buf[i] = byte(b) } return len(buf), nil } type LogReader struct { io.Reader } func (r LogReader) Read(b []byte) (int, error) { n, err := r.Reader.Read(b) log.Printf("read %d bytes, error: %v", n, err) return n, err } // STOP OMIT func main() { // START OMIT r := LogReader{ByteReader('A')} b := make([]byte, 10) r.Read(b) fmt.Printf("b: %q", b) // STOP OMIT }