gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 01:53:38 25 4
gpt4 key购买 nike

我有一个结构 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 文件执行三个操作:

  1. 向其中添加必要的文件(即写入)
  2. 重新读取它以计算 SHA256 和(即 Seek、Read)
  3. 将其上传到 S3 存储桶(即查找、读取)

那么以前,当使用文件名时,我为每个操作打开、关闭、重新打开等。然而,我开始编写单元测试,我意识到我的代码并不是真正的可测试,所以我决定使用io.ReadWriter,这样我就可以在实际代码使用中打开文件,并在测试中传递缓冲区。

现在的问题是,流被读取后,需要重置其内部指针才能执行第二次读取(即计算校验和,然后上传),但据我所知,流不能倒带。我应该如何处理这个问题?因为我目前的方法似乎在概念上有些错误。

最佳答案

您是否考虑过使用 io.ReadWriteSeeker 接口(interface)?

bytes.Reader 实现了Seek

关于go - 我应该如何在 Go 中重用流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54843871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com