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
相关推荐
TYKJ02310 小时前
租GPU服务器前必须确认的5个隐藏成本
服务器·后端·ai编程
叶子野格10 小时前
《C语言学习:文件操作》16
c语言·开发语言·c++·学习·visual studio
AI科技星10 小时前
万有引力G与真空介电常数ε0全维度完整关系式汇编(基于v=c螺旋时空理论)
c语言·开发语言·前端·javascript·网络·汇编·electron
回家路上绕了弯10 小时前
LangChain4j 万字实战:Java生态最火大模型框架,从入门到企业级RAG与Agent落地
后端
如竟没有火炬10 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
东风微鸣10 小时前
Rook-Ceph v1.20.0 CSI ServiceAccount 命名不匹配 Bug 及修复方案
后端
铁皮饭盒10 小时前
Bun 提供了许多 Node.js 原生没有的专属 API
前端·后端
destinying10 小时前
前端秒变AI全栈,我的核心资产是一套Node.js“中间件”
前端·后端·面试
JAVA社区10 小时前
Java高级全套教程(十三)—— 分布式锁超详细实战详解(原理+三种方案企业级落地)
java·开发语言·分布式·spring cloud·面试·java-zookeeper
Mahir0810 小时前
MyBatis 延迟加载深度解密:从使用方式到底层动态代理原理全解
java·后端·面试·mybatis