一尘不染

阅读器界面和golang中的Read方法

go

我正在跟随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替代?

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


阅读 265

收藏
2020-07-02

共1个答案

一尘不染

你应该扫描和“ROT13”只有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的内容以及读取的字节数。

2020-07-02