掌握Go语言:深入encoding/gob包的高效数据序列化
package main
import (
"bytes"
"encoding/gob"
"fmt"
"log"
)
// 定义一个示例数据结构
type ExampleData struct {
IntVal int
StrVal string
}
func main() {
// 创建一个编码器和解码器对象
var network bytes.Buffer // 用于序列化和反序列化的缓冲区
enc := gob.NewEncoder(&network) // 创建编码器
dec := gob.NewDecoder(&network) // 创建解码器
// 创建一个ExampleData实例
example := ExampleData{IntVal: 10, StrVal: "示例字符串"}
// 使用编码器将数据序列化到缓冲区
if err := enc.Encode(example); err != nil {
log.Fatal(err)
}
// 清空缓冲区中的数据以准备反序列化
network.Reset()
// 使用解码器从缓冲区中反序列化数据
var decoded ExampleData
if err := dec.Decode(&decoded); err != nil {
log.Fatal(err)
}
// 输出反序列化后的数据
fmt.Printf("反序列化后的数据: %+v\n", decoded)
}
这段代码首先定义了一个名为ExampleData
的数据结构,然后创建了一个bytes.Buffer
实例来作为序列化和反序列化的缓冲区。接着,使用gob.NewEncoder
和gob.NewDecoder
函数创建了编码器和解码器。最后,使用编码器将ExampleData
实例序列化,并使用解码器将其反序列化,并打印出反序列化后的数据。这个过程展示了encoding/gob
包的基本用法,并且是学习Go语言数据序列化的一个很好的起点。
评论已关闭