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
相关推荐
雨落秋垣1 分钟前
gRPC 协议的简单介绍以及应用
rpc
马尔代夫哈哈哈3 分钟前
Spring 事务处理
java·后端·spring
清水白石0086 分钟前
缓存的艺术:Python 高性能编程中的策略选择与全景实战
开发语言·数据库·python
Libraeking13 分钟前
02 深度剖析:MCP 协议底层的 JSON-RPC 机制与生命周期
网络协议·rpc·json
逆境不可逃18 分钟前
【从零入门23种设计模式02】创建型之单例模式(5种实现形式)
java·spring boot·后端·单例模式·设计模式·职场和发展
JienDa21 分钟前
Haio · 海鸥 - 企业级插件化应用平台
开发语言·php
Toormi22 分钟前
Go 1.26在性能方面做了哪些提升?
开发语言·后端·golang
CHANG_THE_WORLD22 分钟前
深入理解C语言指针运算与数据搜索
c语言·开发语言
大尚来也24 分钟前
Spring Boot 集成 Nacos 完全指南:从配置中心到服务发现一站式实战
spring boot·后端·服务发现
逆境不可逃29 分钟前
【从零入门23种设计模式04】创建型之原型模式
java·后端·算法·设计模式·职场和发展·开发·原型模式