当前位置: 首页 > article >正文

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

下载protoc编译器

  • 下载
    https://github.com/protocolbuffers/protobuf/releases

在这里插入图片描述
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 内容:

// proto语法版本
syntax = "proto3";

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

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

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

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

在这里插入图片描述

  • 创建main.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
    在这里插入图片描述

http://www.kler.cn/a/228741.html

相关文章:

  • 使用 C++ 实现神经网络:从基础到高级优化
  • Ubuntu 24.04 LTS 安装 tailscale 并访问 SMB共享文件夹
  • 二叉搜索树(TreeMapTreeSet)
  • MySQL HASH索引详解
  • 【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用
  • 02.02、返回倒数第 k 个节点
  • BFS——双向广搜+A—star
  • 阿里云计算巢是什么?计算巢服务详细介绍
  • 无锁序列系列笔记
  • 使用MySQL Workbench连接MySQL很慢
  • vue2.0+使用md-edit编辑器
  • Android学习之路(29) Gradle初探
  • Django学习记录02
  • Camera2+OpenGL ES+MediaCodec+AudioRecord实现录制音视频写入H264 SEI数据
  • 大数据信用报告查询费用一般要多少钱?
  • 设置 相关
  • 共享网盘系统PHP源码
  • 两次NAT
  • C++泛型编程:类模板(上)
  • 点灯科技esp32 idfv5.1组件库
  • 【ArcGIS Pro】从0开始
  • IP协议(2) 和 数据链路层协议基础
  • 华为自动驾驶干不过特斯拉?
  • Zephyr NRF7002 实现AppleJuice
  • openGauss学习笔记-212 openGauss 数据库运维-日志参考
  • 服务器和云服务器哪个更安全?