为了账号安全,请及时绑定邮箱和手机立即绑定

我应该如何在 Go 中重用流?

我应该如何在 Go 中重用流?

Go
POPMUISE 2023-06-12 10:08:54
我有一个结构Artifact和以下两个感兴趣的函数:type Artifact struct {    Name string    ZipFile io.ReadWriter}func New(name string, files []string, zipArchiveStream io.ReadWriter) *Artifact {}func (a *Artifact) Upload() error {}所以这就是问题所在:在传递之前io.ReadWriter,我使用的是文件名。我需要对 zip 文件执行三个操作:向其中添加必要的文件(即写入)再读一遍计算SHA256和(即Seek,Read)将其上传到 S3 存储桶(即查找、读取)那么之前,当使用文件名时,我为每个操作打开、关闭、重新打开等。然而,我开始编写单元测试,我意识到我的代码并不是真正可测试的,所以我决定使用它io.ReadWriter,这样我就可以在实际代码使用中打开文件,并在测试中传递缓冲区。现在的问题是,在读取流后,需要重置其内部指针才能执行第二次读取(即计算校验和,然后上传),但据我所知,流无法倒带。我应该如何处理这个问题?因为我目前的方法似乎在概念上有些错误。
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您是否考虑io.ReadWriteSeeker过使用该界面?

bytes.Reader工具Seek


查看完整回答
反对 回复 2023-06-12
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信