Go使用Protobuf需先安装protoc编译器和protoc-gen-go插件,再编写.proto文件定义结构,如Person消息;通过protoc生成Go代码后,用proto.Marshal和proto.Unmarshal实现高效序列化与反序列化。
Go语言使用Protocol Buffers(简称Protobuf)序列化数据,主要通过定义`.proto`文件描述数据结构,然后使用工具生成Go代码,最后在程序中调用生成的代码进行序列化和反序列化。整个过程高效、紧凑,适合高性能服务间通信或数据存储。
要使用Protobuf,先确保系统安装了protoc编译器和Go语言支持插件。
步骤:
protoc:从 GitHub releases 下载对应平台的版本,并将protoc加入环境变量PATH。protoc-gen-go在$GOPATH/bin目录下,并确保该路径在PATH中。创建一个person.proto文件,定义一个简单的消息结构:
这个文件定义了一个包含姓名、年龄和邮箱的Person消息类型。
使用protoc命令生成Go结构体代码:
执行后会生成person.pb.go文件(实际路径
由go_package决定),其中包含可直接在Go中使用的结构体和方法,如Person结构、Marshal和Unmarshal等。
导入生成的包,使用proto.Marshal和proto.Unmarshal进行操作。
示例代码:
package main输出类似:
反序列化结果: name:"Alice" age:30 email:"alice@example.com"
注意:新项目推荐使用google.golang.org/protobuf替代旧的github.com/golang/protobuf,API更简洁且性能更好。
基本上就这些。定义结构、生成代码、调用Marshal/Unmarshal,Protobuf就能在Go中高效工作。不复杂但容易忽略细节,比如包路径和protoc插件版本。