無限に2バイトを返すio.Readerからio.CopyNで奇数バイトをコピーするとpanic
以下のように無限に2バイトを返し続けるio.Reader
を実装して、そこから奇数バイト(例では5バイト)をio.CopyN
でコピーしようとするとpanicを起こしました。偶数バイトをコピーする場合には起きません。なぜでしょうか?
package main
import (
"io"
"os"
)
type stream int
func (s *stream) Read(p []byte) (n int, err error) {
p[0] = byte('a')
p[1] = byte('b')
return 2, nil
}
func main() {
io.CopyN(os.Stdout, new(stream), 5)
// panic: runtime error: index out of range
}
環境:go version go1.10.3 windows/386