我正在跟随golang游览,并被要求:
实现一个实现io.Reader并从io.Reader读取的rot13Reader,通过将ROT13替换密码应用于所有字母字符来修改流。
我首先对* rot13Reader实现了该方法
type rot13Reader struct { r io.Reader } func (r *rot13Reader) Read(p []byte) (n int, e error){ }
但是,我无法理解这种Read方法。
是否p包含所有读取的字节?因此,我要做的就是遍历它们并应用ROT13替代?
p
我知道它应该在文件末尾返回读取的字节数和EOF错误,但是我不确定何时以及如何调用此方法。那么回到我原来的问题,是否p包含所有读取的数据?如果没有,那我该怎么办呢?
你应该扫描和“ROT13”只有n字节(一个读经io.Reader之内rot13Reader)。
n
io.Reader
rot13Reader
func (r *rot13Reader) Read(p []byte) (n int, e error){ n, e = r.r.Read(p) for i:=range(p[:n]) { p[i]=rot13(p[i]) } return }
该rot13Reader封装任何读者和呼叫Read在所述封装的读者。 它返回rot13的内容以及读取的字节数。
Read