举例:
// 任何实现了Read方法的类型,都可以使用io.Readerfunc ReadFrom(reader io.Reader, num int) ([]byte, error){
p := make([]byte, num)
n, err := reader.Read(p)
if n > 0 {
return p[:n], nil
}
return p, err
}
// ReadFrom方法接收一个io.Reader参数,所以我们可以读取任何数据(前提是该数据类型实现了Read方法):// 从标准输入读取
data, err = ReadForm(os.Stdin, 11)
// 从普通文件读取(file是os.file的实例,也就是实现了Read方法)
data, err = ReadFrom(file, 9)
// 从字符串读取
data, err = ReadFrom(string.NewReader("from string"), 12)