我正在尝试将gob
编码数据保存在磁盘上的文件中作为简单的数据存储。但是,当我下次打开它时,gob 编码器会忽略文件中已有的任何数据,并在发送数据之前重新开始发送已发送格式的定义。看到这gob.Encoder
需要一个io.Writer
,而不是一个io.ReadWriter
,这是有道理的。编码器不知道文件中的内容,因为它无法从中读取。
然而,这是非常低效的。它也不必要地难以解析,因为每次编码器在写入文件时重新启动时,您都必须重置解码器,因为 gob 类型 id 可能已经改变。
如何继续写入包含 gob 数据的文件的末尾?我是否必须创建一个新文件,移动所有数据,以便 gob 编码器知道它已经发送了哪些类型,或者我有没有办法告诉编码器它应该知道哪些类型,或者其他方式?我需要它在软件重新启动时工作。