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
相关推荐
asdfg12589635 小时前
Java 大型项目设计的“内功心法”---面向对象和接口编程
java·开发语言
叼烟扛炮5 小时前
C++第八讲:string 类
开发语言·c++·算法·string
ch.ju5 小时前
Java programming Chapter Three——Array
java·开发语言
努力努力再努力wz5 小时前
【Qt入门系列】第一个 Qt Widgets 程序:项目创建、UI 文件、Hello World、对象树与 qDebug 日志
java·c语言·开发语言·数据结构·c++·qt·ui
M ? A5 小时前
Vue 转 React | VuReact 实时监听开发指南
前端·vue.js·后端·react.js·面试·开源·vureact
电子云与长程纠缠5 小时前
UE5 GameFeature创建与使用
开发语言·学习·ue5·游戏引擎
贺国亚5 小时前
Kafka系统设计与编码
后端·kafka
_Evan_Yao5 小时前
零基础学编程,第一门语言选Python还是C?
c语言·开发语言·python
凤凰院凶涛QAQ5 小时前
《C++转Java快速入手系列》抽象类和接口篇
java·开发语言·c++
河阿里5 小时前
Lambda表达式(Java):从语法本质到工程实践
java·开发语言