Golang Go语言中这个功能可以用流做到吗

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中这个功能可以用流做到吗
原始文件 01 有 9G 多,补丁文件 02 是 200MB。我想把 200MB 的补丁插入到文件 01 偏移 400MB 的位置…
如果可以的话可否说下如何实现

11 回复

开个新文件,读取并写入 400MB, 读取并写入 200MB, 读取并写入剩余数据。

更多关于Golang Go语言中这个功能可以用流做到吗的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


自带的 io 库就可以了

不太容易实现, 你弄了流之后, 怎么知道插哪一个 bit 后面呢?

对啊,如果前面计算读了多少?

所以……这是和看雪是同一人吗…

这个问题我之前也碰到过,感觉没有什么特别好的办法,windows 下或许可以尝试稀疏文件 /操作 NTFS 结构
反正我最后选择了 1L 的做法

os.File 有个 Seek 方法

从首页看点进来的。
所以我要说 Python mmap 库可以不要怪我。
网上 mmap 库的用法看看就知道该怎么写了。

在Golang(Go语言)中,关于是否可以用“流”来实现某个功能,这主要取决于具体功能的性质以及你对“流”的定义。在Go中,“流”的概念通常与I/O操作(如文件读写、网络通信等)相关,也可以扩展到通过通道(channels)在goroutines之间传递数据流的场景。

  1. 文件和网络流:Go的标准库提供了强大的文件和网络操作支持,你可以使用os包和net包来处理文件流和网络数据流。这些流支持读写操作,可以逐块或逐行处理数据。

  2. 数据流处理:如果你指的是在内存中处理数据流(如处理日志、数据流分析等),可以使用Go的切片(slices)和通道(channels)来实现。通道在Go中是一种非常有效的并发原语,可以用来在goroutines之间传递数据流。

  3. 第三方库:对于更复杂的数据流处理场景,如流处理框架(如Apache Kafka的客户端库),Go社区也提供了许多高质量的第三方库。

  4. 流式API:虽然Go语言本身没有内置的“流式API”概念(如Java 8中的Streams),但你可以通过组合函数式编程技术和通道来实现类似的功能。

因此,是否能用“流”来实现Go中的某个功能,关键在于你具体要实现的功能是什么,以及你如何定义和利用“流”。在Go中,通常有多种方法可以实现类似的功能,选择哪种方法取决于你的具体需求和偏好。

回到顶部