package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("hello,reader!")
b := make([]byte, 13)
for {
//io.Reader接口中的Reader方法
// 用数据填充给定的字节切片并返回填充的字节数和错误值
// 在遇到数据流的结尾时,它会返回一个io.EOF错误
// 这里是把r读取到b中吗
// 前面的n表示填充的字节数,后面的err表示错误值
//在遇到数据流的结尾时err就等于EOF,否则等于nil
n, err := r.Read(b)
//这里n应该表示这次读取到的字节数
//第一次读取了8个字节,这次读取了剩余的5个字节,err仍为EOF
fmt.Printf("n= %v err = %v b=%c \n", n, err, b)
// 切片输出读取位置到剩余位置的值
fmt.Printf("b[:n] = %q\n", b[:n])
if err == io.EOF {
break
}
}
}