zoukankan      html  css  js  c++  java
  • golang-protobuf使用

    什么是protobuf?

    Protocol buffers是一个灵活的、高效的、自动化的用于对结构化数据进行序列化的协议,与XML、json相比,Protocol buffers序列化后的码流更小、速度更快、操作更简单。

    安装protoc工具

    proto用来将.proto文件转化为自己使用的语言格式,我使用的是go语言,所以还要下载一个与protoc配合的插件,一会再说这个插件。

    我使用的是linux环境,下载protoc源码,下载地址,我选择如图的安装包,可以不需要再编译,直接将bin添加到环境变量中或者将bin/protoc 软链接到/usr/bin下。

    版本没有什么要求限制

     
     

    protobuf插件

    go语言相关的有两个插件gogoprotobuf和goprotobuf(官方出品)

    我这块选择gogoprotobuf(比官方感觉更好),同样也兼容官方

    go get github.com/gogo/protobuf/protoc-gen-gofast
    

    最终

    开始编写.proto文件,编写完运行此命令

    protoc --gofast_out=. a.proto
    

    将编写的a.proto文件转化为go文件,运行完会在当前目录产生一个a.pd.go文件

    go语言操作

    data.Block来自于a.pd.go,是我创建的proto文件生成的go文件

    d := data.Block{
            Data: num,
        }
    fmt.Println(len(num))
    res ,err := proto.Marshal(&d)
    

    如果进行远程传输,只需要再解析出来就OK,代码如下

    d1 := data.Block{}
    // res是自己接受到的[]byte数组内容
    // 从[]byte解析出来的内容赋值给了d1
    proto.Unmarshal(res, &d1)
    

    我编写的proto文件

    syntax = "proto3";
    message Block {
        bytes data = 1;
    }
    
    • sysntax 版本说明
    • message 类型结构体

    详细的去往借鉴地址学习

    借鉴

    更详细的两个插件使用和安装: https://segmentfault.com/a/1190000009277748

    proto文件编写说明:https://www.jianshu.com/p/ea656dc9b037

    官方文档(英文):https://developers.google.com/protocol-buffers/docs/proto3

  • 相关阅读:
    java之类的封装
    java飞机大战之子弹的自动生成
    java之线程飞机大战制作
    java线程游戏之背景图片的移动
    mysql的安装以及简单的命令符
    java之控制多幅图片
    java之线程
    JAVA之数组队列
    java之链表
    python之数据库的操作(课前准备)
  • 原文地址:https://www.cnblogs.com/ExMan/p/12160546.html
Copyright © 2011-2022 走看看