Golang开发必备:Gob数据编码/解码
作者:小月亮
时间:2025-04-18
来源:正软商城
浏览:4
Gob库用于对复杂数据结构进行编码和解码。编码过程使用反射机制将数据结构转换为字节序列,解码过程则将字节序列转换为数据结构。在实际应用中,Gob可以用于网络传输或持久化存储数据。例如,可以在RPC服务器之间发送和接收Gob编码后的Person结构体。
本文目录
Gob 库用于对复杂数据结构进行编码和解码。编码过程使用反射机制将数据结构转换为字节序列,解码过程则将字节序列转换为数据结构。在实际应用中,Gob 可以用于网络传输或持久化存储数据。例如,可以在 RPC 服务器之间发送和接收 Gob 编码后的 Person 结构体。

Golang 开发必备:Gob 编码/解码
简介
Gob 是 Golang 中一种用于对复杂数据结构进行编码/解码的库。它使用反射机制将数据结构转换为字节序列,从而可以轻松地进行网络传输或持久化存储。
编码
import (
"encoding/gob"
"bytes"
)
type Person struct {
Name string
Age int
}
func main() {
// 创建一个 Person 结构体
person := Person{Name: "John", Age: 30}
// 创建一个 bytes.Buffer 来存储编码后的数据
buf := new(bytes.Buffer)
// 使用 Gob 编码器对 person 进行编码
encoder := gob.NewEncoder(buf)
err := encoder.Encode(person)
if err != nil {
fmt.Println(err)
}
// 获取编码后的字节序列
encodedBytes := buf.Bytes()
}解码
import (
"encoding/gob"
"bytes"
)
type Person struct {
Name string
Age int
}
func main() {
// 创建一个 bytes.Buffer 来存储编码后的数据
buf := bytes.NewBuffer([]byte{104, 111, 110, ...}) // 此处应替换为实际的编码数据
// 使用 Gob 解码器对编码后的数据进行解码
decoder := gob.NewDecoder(buf)
var person Person
err := decoder.Decode(&person)
if err != nil {
fmt.Println(err)
}
// 获取解码后的 Person 结构体
fmt.Println(person)
}实战案例
发送一个 Person 结构体到 RPC 服务器:
import (
"encoding/gob"
"bytes"
"net/rpc"
)
type Person struct {
Name string
Age int
}
type Args struct {
Person Person
}
type RPCServer struct {
}
func (s *RPCServer) SendPerson(args *Args, reply *string) error {
fmt.Println(args.Person)
return nil
}
func main() {
// 创建一个客户端
client, err := rpc.Dial("tcp", "localhost:1234")
if err != nil {
fmt.Println(err)
}
// 创建一个 Person 结构体
person := Person{Name: "John", Age: 30}
// 创建一个 bytes.Buffer 来存储编码后的数据
buf := new(bytes.Buffer)
// 使用 Gob 编码器对 person 进行编码
encoder := gob.NewEncoder(buf)
err = encoder.Encode(person)
if err != nil {
fmt.Println(err)
}
// 获取编码后的字节序列
encodedBytes := buf.Bytes()
// 将编码后的字节序列作为参数传递给 RPC 方法
err = client.Call("RPCServer.SendPerson", &Args{Person: encodedBytes}, nil)
if err != nil {
fmt.Println(err)
}
}
作者最新文章
wps如何生成目录自动生成目录
2026-11-05 11:16
二狗PPT怎么用Word文档生成PPT
2026-11-03 14:55
office打开弹出另存为 修复保存设置
2026-11-03 10:08
火山引擎EMRAI助手导出诊断结果方法
2026-11-01 19:35
navicat连接mysql数据库 配置测试方法
2026-10-26 10:02
上一篇:
C4D创建铁环的详细步骤
热门文章
更多
精品专题
更多
Mac软件
更多
火山引擎 网页版
Windows/ macOS/ Linux
火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。
















