在去语言中安装与使用protobuf的方法详解

  

  

本文主要给大家介绍了关于去语言安装使用protobuf的相关内容,分享出来供大家参考学习、下面话不多说了,来一起看看详细的介绍吧。

  

protobuf是谷歌开发出来的一个语言无关,平台无关的数据序列化工具,在rpc或tcp通信等很多场景都可以使用。通俗来讲,如果客户端和服务端使用的是不同的语言,那么在服务端定义一个数据结构,通过protobuf转化为字节流,再传送到客户端解码,就可以得到对应的数据结构。这就是protobuf神奇的地方,并且,它的通信效率极高,“一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一”。

  


  

  

编译安装protobuf的编译器protoc
  

        wget https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz   焦油zxvf protobuf-2.6.1.tar.gz   cd protobuf-2.6.1./配置   使   使安装      

,,,,,,,执行<代码> protoc - h>   

  

安装插件protoc-gen-go,它是一个去程序,编译它之后将可执行文件执行路径写入环境变量
  

        去github.com/golang/protobuf/protoc-gen-go      

获取样机包
  

        去github.com/golang/protobuf/proto      


  

  

protobuf的使用方法是将数据结构写入到.proto文件中,使用protoc编译器编译(间接使用了插件)得到一个新的包,里面包含去中可以使用的数据结构和一些辅助方法。

  

<强>编写测试。原型文件
  

        包的例子;      enum FOO {X=17;};      {消息测试   需要字符串标签=1;   可选int32 type=2(默认=77);   重复int64代表=3;   可选组OptionalGroup=4 {   需要字符串RequiredField=5;   }   }      

,,,编译:
  

  

,,,执行<代码> protoc——go_out=?。原型代码生成test.pb。去文件
  

  

,,,将test.pb.go文件放入例子文件夹(对应上面包)中,作为示例包
  

  

<强>尝试
  

        主要包      导入(   “日志”      "github.com/golang/protobuf/proto”   “例子”   )      函数main () {   测试:=和例子。测试{   标签:proto.String (“hello”),   类型:proto.Int32 (17),   代表:[]int64 {1,2,3},   Optionalgroup:和例子。Test_OptionalGroup {   RequiredField:原型。字符串(“再见”),   },   }   数据,犯错:=proto.Marshal(测试)   如果犯错!=nil {   日志。致命的(“封送处理错误:犯错)   }   纽特:=,example.Test {}   呃=原型。Unmarshal(数据、纽特)   如果犯错!=nil {   日志。致命的(“解封错误:犯错)   }//现在测试和纽特包含相同的数据。   如果test.GetLabel () !=newTest.GetLabel () {   日志。Fatalf(“数据不匹配% q !=% q ", test.GetLabel (), newTest.GetLabel ())   }//test.GetOptionalgroup () .GetRequiredField ()//等   }      


  

  
      <李>消息测试对为struct结构,其属性字段有了对应的得到方法,在去中可以使用<代码> test.GetLabel() ,<代码> test.GetType() 获取测试对象的属性李   <李> OptionalGroup对应为结构体中的内嵌结构李   <李>原型文件中重复属性对于切结构李   <李> <代码> test.Reset() 可以使其所有属性置为0值   <李>使用编组和数据编出可以轻松的编码和解码李   
  

这些只是一些特性,想要仔细研究可以查看github上的wiki: https://github.com/golang/protobuf

  

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。

在去语言中安装与使用protobuf的方法详解