我正在玩 Golang tour,我想知道为什么使用裸返回给我正确的结果,而正常的却没有。这是我遇到这个问题https://tour.golang.org/methods/12的练习。目标是创建一个可以破译 rot13 的阅读器。并且 rot13 功能已经过测试。func (r rot13Reader) Read(b []byte) (n int, err error) { n, err = r.r.Read(b) for i, v := range b { b[i] = rot13(v) } return}上面的代码给了我正确的结果。func (r rot13Reader) Read(b []byte) (int, error) { for i, v := range b { b[i] = rot13(v) } return r.r.Read(b)}这不会改变输入流的任何内容。有人能解释一下为什么吗?先感谢您。
2 回答
守候你守候我
TA贡献1802条经验 获得超10个赞
该Read()操作会改变输入数组b。在第二个示例中,rot13()操作被操作覆盖Read()。此外,该rot13()操作是在将任何数据读入数组之前执行的,因此您可能正在rot13()处理垃圾数据。
如果您希望第二个示例起作用,则需要编写如下内容:
func (r rot13Reader) Read(b []byte) (int, error) {
n, err := r.r.Read(b)
for i, v := range b {
b[i] = rot13(v)
}
return n, err
}
- 2 回答
- 0 关注
- 170 浏览
添加回答
举报
0/150
提交
取消