当前位置: 首页 > 面试题库 >

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

淳于嘉树
2023-03-14
问题内容

我正在跟随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包含所有读取的数据?如果没有,那我该怎么办呢?


问题答案:

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



 类似资料:
  • 问题内容: 在Golang中处理原始IP软件包时,遇到了一个问题,我似乎无法找到以下解决方案: 在IPv4的说明书中包含有大于8位小字段。例如,版本或报头长度(每个4位)或标志(3位)。 如何从io.Reader中读取这些值,然后再使用Golang处理它们?到目前为止,我一直在使用binary.Read方法,但是由于Golang中最小的整数类型是int8,因此在这种情况下是不可能的。 问题答案:

  • 假设我有一个输入文件,在HDFS中为这个文件创建了三个块。假设我有三个数据节点,每个数据节点存储一个块。如果我有3个输入拆分,则3个映射器将并行运行,以处理各自数据节点的本地数据。每个映射器使用输入格式和记录读取器以键值对的形式获取输入。此场景使用TextInputFormat,其中记录是来自文件的完整文本行。 这里的问题是,如果在第一个块的末尾有记录中断,会发生什么。 1)Hadoop如何读取此

  • 问题内容: 我正在编写自己的logginMiddleware。基本上,我需要记录请求和响应的正文。我面临的问题是,当我阅读正文时,它变成空的,无法两次阅读。我知道发生这种情况是因为它属于ReadCloser类型。有没有一种方法可以将身体重绕到开始? 问题答案: 检查和嘲笑请求正文 初次阅读主体时,必须对其进行存储,以便在处理完该主体之后,可以将新的主体设置为根据原始数据构造的请求主体。因此,当您在

  • 我是新来的,我正在学习使用方法等等,我在方法中有我的代码,但在代码中有一个控制台。ReadLine();这是我不想要的。基本上,我需要做的是一个包含10个方法的大作业,作为输入,你必须调用哪个方法,然后调用实际的输入,但是当我的方法中有一个readline时,我必须给出3个,而不是2个。如果有人知道如何帮助noob,我的代码如下 基本上是int.parse(consolereadline);我需要

  • 问题内容: Java的默认编码为。是?(请参见下面的编辑) 当文本文件被编码为?读者如何知道自己必须使用? 我谈论的读者是: s 来自的s 一个从 … 轮到我们,编码取决于操作系统,这意味着以下内容并非在每个操作系统上都适用: 问题答案: 读者如何知道他必须使用UTF-8? 通常你指定 你自己 的一个。它有一个采用字符编码的构造函数。例如 所有其他读者(据我所知)都使用平台默认字符编码,这实际上可

  • 问题描述 (Problem Description) 如何阅读文件? 解决方案 (Solution) 此示例显示如何使用BufferedReader类的readLine方法读取文件。 import java.io.*; public class Main { public static void main(String[] args) { try { Buff