Io golang中的阅读器接口和读取方法

Io golang中的阅读器接口和读取方法,io,go,byte,Io,Go,Byte,我一直在跟踪golang之旅,我被要求: 实现一个rot13Reader,它实现io.Reader并从io.Reader读取,通过对所有字母字符应用ROT13替换密码来修改流 我首先将该方法实现到*rot13Reader type rot13Reader struct { r io.Reader } func (r *rot13Reader) Read(p []byte) (n int, e error){ } 然而,我无法理解这种阅读方法 p是否包含所有读取的字节?因此我

我一直在跟踪golang之旅,我被要求:

实现一个rot13Reader,它实现io.Reader并从io.Reader读取,通过对所有字母字符应用ROT13替换密码来修改流

我首先将该方法实现到*rot13Reader

   type rot13Reader struct {
    r io.Reader
}

func (r *rot13Reader) Read(p []byte) (n int, e error){


}
然而,我无法理解这种阅读方法

p
是否包含所有读取的字节?因此我所要做的就是迭代它们并应用ROT13替换

我知道它应该返回读取的字节数和文件末尾的EOF错误,但是我不确定何时以及如何调用此方法。那么回到我原来的问题,
p
是否包含所有读取的数据?如果没有,那么我如何才能找到它?

您应该只扫描和“rot13”字节
n
字节(由
rot13Reader
中的
io.Reader
读取的字节)

rot13Reader
封装任何读卡器,并在所述封装读卡器上调用
Read

它返回经过轮换的内容和读取的字节数。
@Bula我编辑了答案:这是
rot13Reader
接收器的名字。我已将其更改为
r
,但不太清楚,因为
r
也是
rot13Reader
结构中
io.Reader
的名称。小细节。为了正常工作,我认为你应该改变第一个赋值:n,e=r.r.Read(p)。。为使命名的返回正常工作。Regards@FabianoTarlao不要犹豫,直接编辑答案:这将使所有人受益。我更新了我的评论,@VonC我来自SO,但我一直认为这样做有点“不礼貌”:-)我有点害羞。很抱歉我现在就做。(此外,我只是在学习如何去做……我还是有点犹豫不决)。我现在就做。@Fab没问题,我会检查你的编辑。谢谢你的贡献
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
}