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 内容:

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

相关推荐

  1. Gojson序列序列(MarshalUnmarshal)

    2024-02-05 20:48:01       13 阅读
  2. 序列序列

    2024-02-05 20:48:01       28 阅读
  3. 在php中序列序列

    2024-02-05 20:48:01       9 阅读
  4. Linux:协议定制以及序列序列

    2024-02-05 20:48:01       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 20:48:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 20:48:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 20:48:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 20:48:01       18 阅读

热门阅读

  1. vue实现父组件与子组件传参

    2024-02-05 20:48:01       31 阅读
  2. C语言如何控制输出精度?

    2024-02-05 20:48:01       36 阅读
  3. 游戏如何选择服务器

    2024-02-05 20:48:01       25 阅读
  4. spring aop实现接口超时处理组件

    2024-02-05 20:48:01       31 阅读
  5. vue3.x 英文转换成简体中文

    2024-02-05 20:48:01       31 阅读