Menggunakan pakej gob untuk mensiri data di Golang memerlukan langkah berikut: Laksanakan antara muka GobEncode dan GobDecode untuk jenis yang akan disiri. Gunakan gob.NewEncoder dan gob.NewDecoder untuk mencipta pengekod dan penyahkod. Data disiri menggunakan pengekod dan dinyahsiri menggunakan penyahkod. Data bersiri boleh ditulis ke fail atau dipindahkan melalui rangkaian. . Artikel ini akan memperkenalkan langkah-langkah menggunakan pakej gob
untuk melaksanakan siri data dan menyediakan beberapa kes praktikal.
Pasang pakej gob
Pakej gob
ialah sebahagian daripada pustaka standard Go, jadi tidak perlu memasangnya secara manual.
Penyediaan jenisencoding/gob
包提供了一种方便且高效的方式来序列化和反序列化数据。本文将介绍使用 gob
包实现数据序列化的步骤,并提供一些实战案例。
安装 gob
包
gob
包是 Go 标准库的一部分,因此无需手动安装。
类型准备
为了使用 gob 序列化数据,你的类型必须实现 GobEncode
和 GobDecode
Untuk menggunakan gob untuk mensiri data, jenis anda mesti melaksanakan antara muka GobEncode
dan GobDecode
. Antara muka ini mentakrifkan cara jenis disiri dan dinyahsiri menjadi jujukan bait.
Berikut ialah contoh pelaksanaan jenis Orang: package main
import (
"encoding/gob"
"log"
)
type Person struct {
Name string
Age int
}
func (p Person) GobEncode(w gob.Encoder) error {
if err := w.Encode(p.Name); err != nil {
return err
}
return w.Encode(p.Age)
}
func (p *Person) GobDecode(r gob.Decoder) error {
if err := r.Decode(&p.Name); err != nil {
return err
}
return r.Decode(&p.Age)
}
func main() {
// 序列化 Person
var buff bytes.Buffer
enc := gob.NewEncoder(&buff)
if err := enc.Encode(Person{"Alice", 25}); err != nil {
log.Fatal(err)
}
// 反序列化 Person
dec := gob.NewDecoder(&buff)
var p Person
if err := dec.Decode(&p); err != nil {
log.Fatal(err)
}
fmt.Println(p) // {Alice 25}
}
Kes 1: Mensiri data ke fail Anda boleh memfailkan data kemudian
.
// 将 Person 序列化到文件中 func WriteToFile(p Person, filename string) error { f, err := os.Create(filename) if err != nil { return err } defer f.Close() enc := gob.NewEncoder(f) return enc.Encode(p) } // 从文件中反序列化 Person func ReadFromFile(filename string) (*Person, error) { f, err := os.Open(filename) if err != nil { return nil, err } defer f.Close() dec := gob.NewDecoder(f) var p Person if err := dec.Decode(&p); err != nil { return nil, err } return &p, nil }
Kes 2: Menghantar data bersiri melalui rangkaian
🎜🎜Pensirian data juga boleh digunakan untuk menghantar data melalui rangkaian. 🎜rreeeeAtas ialah kandungan terperinci Laksanakan siri/deserialisasi data di Golang menggunakan Gob. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!