protoc结合go完成protocol buffers协议的序列化与反序列化

下载protoc编译器

ps: 根据平台选择需要的编译器,这里选择windows

  • 解压
  • 加入环境变量

安装go专用protoc生成器

https://blog.csdn.net/qq_36940806/article/details/135017748?spm=1001.2014.3001.5501

创建go项目,模拟proto buffer 序列化与反序列化

  • 安装Protocol Buffers 插件
  • 创建proto文件,路径:pbfile/user.proto

user.proto 内容:

bash 复制代码
// proto语法版本
syntax = "proto3";

// 生成go文件所属包名
option go_package = "./service";

// 指定文件生成出来的package
package service;

// 消息
message User{
  string username = 1;
  int32 age = 2;
}
  • 执行 protoc生成 pb.go 文件
bash 复制代码
protoc --go_out=./ .\pbfile\user.proto

生成文件内容:service/user.pb.go

  • 创建main.go,进行序列化与反序列化
go 复制代码
package main

import (
	"github.com/golang/protobuf/proto"
	"go-grpc/service"
	"log"
)

func main() {

	user := &service.User{
		Username: "test",
		Age:      23,
	}

	// 序列化
	marshal, err := proto.Marshal(user)
	if err != nil {
		log.Fatal(err)
	}

	// 反序列化
	newUser := &service.User{}
	err = proto.Unmarshal(marshal, newUser)
	if err != nil {
		log.Fatal(err)
	}
	log.Println(newUser)
}
  • 执行main.go
相关推荐
csbysj20204 分钟前
Ruby 面向对象编程深入解析
开发语言
疯狂的程序猴4 分钟前
完整指南:iPhone崩溃日志查看与分析方法及低内存崩溃处理
后端
voidmort4 分钟前
web3.py 简介:面向 Python 开发者的以太坊
开发语言·python·web3.py
秧歌star51913 分钟前
PageHelper 分页失效原因分析与正确实践
后端
疯狂的程序猴18 分钟前
苹果iOS应用签名与上架App Store完整指南包括注意事项
后端
回家路上绕了弯18 分钟前
生产环境服务器变慢?从应急到根因的全流程诊断处理指南
分布式·后端
小胖霞19 分钟前
Node+Express+MySQL 后端生产环境部署,实现注册功能(三)
前端·后端
aiopencode26 分钟前
抓包技术全面指南:原理、工具与应用场景
后端
Teacher.chenchong28 分钟前
R语言实现物种分布预测与生态位分析:多元算法实现物种气候生态位动态分析与分布预测,涵盖数据清洗、模型评价到论文写作全流程
开发语言·算法·r语言
烤麻辣烫1 小时前
23种设计模式(新手)-7迪米特原则 合成复用原则
java·开发语言·学习·设计模式·intellij-idea