Io golang中的阅读器接口和读取方法
我一直在跟踪golang之旅,我被要求: 实现一个rot13Reader,它实现io.Reader并从io.Reader读取,通过对所有字母字符应用ROT13替换密码来修改流 我首先将该方法实现到*rot13ReaderIo 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是否包含所有读取的字节?因此我
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
}