首页 > 解决方案 > 需要在golang中生成运行时二进制编码文件

问题描述

我正在处理需要生成二进制编码(字节)文件的项目。问题是,我不想存储文件,只需要编码数据来验证一些测试数据。

这是我有zip 文件的示例代码

以上示例适用于zip但我不限于使用zip或任何文件类型。在这里我们需要存储文件来读取,但我不想稍后存储和删除文件。

我知道寻求帮助并没有太大的努力,但作为一个新手,我只是来了。

谢谢。

标签: filegoencode

解决方案


更好的做法是不依赖具体类型(例如os.File),而是使用接口来描述您要使用文件的功能。

例如,如果您有一个函数需要一个文件,因为它想从中读取,请io.Reader改用:

func process(r io.Reader) error {
    // ...
}

同样,如果您想写入文件,请使用io.Writer,或者如果您想同时执行这两项操作,请使用io.ReadWriterio.ReadWriteCloser。您可以将*os.File值传递给这些函数,因为*os.File实现了这些接口。

这样做的好处是您可以使用实现接口的任何值调用这些函数。如果你想测试这些函数,你可以传递一个bytes.Buffer实现io.Reader和的内存,io.Writer你可以在运行时手动构造它的内容,例如:

buf := &bytes.Buffer{}
buf.Write([]byte{1, 2, 3})
buf.WriteString("Hello")

这里buf将包含字节1、、23字符串"Hello"。之后,您可以通过buf需要读者或作家的地方,例如:

process(buf)

查看类似/相关的问题和示例:

为从中读取的函数填充 os.Stdin

在 Golang 中测试文件系统的示例代码


推荐阅读