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
相关推荐
蓝天智能12 分钟前
QT实战:Qt6 字符编码避坑指南
开发语言·qt
xier_ran13 分钟前
【第一周】关键词解释:倒数排名融合(Reciprocal Rank Fusion, RRF)算法
开发语言·python·算法
HelloWorld__来都来了13 分钟前
如何用python爬取上市公司信息
开发语言·python
myloveasuka16 分钟前
[Java]子类到底能继承父类中的哪些东西?继承中成员变量/方法访问特点---就近原则
java·开发语言
PPPPickup26 分钟前
深信服公司---java实习生后端一二面询问
java·后端·ai
架构师沉默27 分钟前
为什么很多大厂 API 不再使用 PUT 和 DELETE?
java·后端·架构
微学AI28 分钟前
内网穿透的应用-Plex 打造随身私人影院,用cpolar告别地狱限制。
开发语言·php
回家路上绕了弯34 分钟前
Claude Code Agent Team 全解析:AI 集群协作,重构代码开发新范式
人工智能·分布式·后端
昨日余光1 小时前
建议收藏!我开发了一个免费无限制的AI绘画公益站!
开发语言·前端·javascript·ai作画·typescript
ZHOUPUYU1 小时前
我在PHP里学到的“套路”与“反套路” 设计模式与依赖注入
开发语言·php