golang显示无法将数据附加到gob文件

Posted

篇首语:本文由小常识网小编为大家整理,主要介绍了golang 显示无法将数据附加到gob文件 – 当尝试解码写入的数据时,解码器将使用“缓冲区中的额外数据”错误输出相关的知识,希望对你有一定的参考价值。

package main import ( "encoding/gob" "fmt" "io" "log" "math/rand" "os" ) type Struct1 struct { IntVal int StringVal string } func PathExists(path string) bool { _, err := os.Stat(path) if err == nil { return true } if os.IsNotExist(err) { return false } return false } func readData(filePath string) { if !PathExists(filePath) { return } file, err := os.Open(filePath) defer file.Close() if err != nil { log.Fatalf("os.Open('%s') failed with '%s'\n", filePath, err.Error()) } dec := gob.NewDecoder(file) var val Struct1 for { err = dec.Decode(&val) if err != nil { if err == io.EOF { return } log.Fatalf("dec.Decode() failed with '%s'\n", err.Error()) } fmt.Printf("Read: %#v\n", val) } } func addData(filePath string) { file, err := os.OpenFile(filePath, os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { log.Fatalf("os.OpenFile('%s') failed with '%s'\n", filePath, err.Error()) } defer file.Close() enc := gob.NewEncoder(file) for i := 0; i < 1; i++ { n := int(rand.Intn(65536)) v := Struct1{ IntVal: n, StringVal: fmt.Sprintf("%d", n), } err = enc.Encode(v) if err != nil { log.Fatalf("enc.Encode() failed with '%s'\n", err.Error()) } fmt.Printf("Wrote: %#v\n", v) } } func main() { filePath := "test.gob" readData(filePath) addData(filePath) readData(filePath) addData(filePath) readData(filePath) } 

以上是关于golang 显示无法将数据附加到gob文件 – 当尝试解码写入的数据时,解码器将使用“缓冲区中的额外数据”错误输出的主要内容,如果未能解决你的问题,请参考以下文章

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至2811500808@qq.com举报,一经查实,本站将立刻删除、维护您的正当权益!