Golang 数据存储: gob
Gob是Golang中的一种数据编码格式,用于序列化和反序列化数据。它被设计为一种简单的、高效的方式来传输数据。
以下是一个使用Gob编码/解码数据的简单例子:
package main
import (
"bytes"
"encoding/gob"
"fmt"
"log"
)
func main() {
// 准备一些数据
type Message struct {
Name string
Body string
Time int64
}
original := Message{"Alice", "Hello", 1294706395881547000}
// 编码
var buf bytes.Buffer
enc := gob.NewEncoder(&buf)
err := enc.Encode(original)
if err != nil {
log.Fatalf("Error encoding message: %v", err)
}
fmt.Printf("Encoded: %x\n", buf.Bytes())
// 解码
dec := gob.NewDecoder(&buf)
var decoded Message
err = dec.Decode(&decoded)
if err != nil {
log.Fatalf("Error decoding message: %v", err)
}
fmt.Printf("Decoded: %#v\n", decoded)
}
在这个例子中,我们首先定义了一个Message
结构体,然后使用gob.NewEncoder()
创建了一个编码器,并用它将原始数据编码到一个bytes.Buffer
中。接着,我们打印出编码后的字节内容。最后,我们创建了一个解码器,并用它将编码后的数据解码回原始的Message
结构体。
需要注意的是,为了使用Gob编码/解码一个类型,你必须首先注册这个类型。这通常是通过调用gob.Register()
函数来完成的。如果你要编码/解码的类型在编码时是未知的,你可以使用gob.Decoder.Decode()
函数返回的interface{}
,然后根据需要将其断言回原始类型。
评论已关闭