好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 在go語言中安裝與使用protobuf的方法詳解

在go語言中安裝與使用protobuf的方法詳解

熱門標簽:汕頭小型外呼系統 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 濱州自動電銷機器人排名 惠州電銷防封電話卡 浙江高頻外呼系統多少錢一個月 阿里云ai電話機器人 鄭州亮點科技用的什么外呼系統 建造者2地圖標注

簡介

本文主要給大家介紹了關于go語言安裝使用protobuf的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。

protobuf是Google開發出來的一個語言無關、平臺無關的數據序列化工具,在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
  tar zxvf protobuf-2.6.1.tar.gz
  cd protobuf-2.6.1./configure
  make
  make install

        執行 protoc  -h 查看安裝是否成功

安裝插件 protoc-gen-go,它是一個go程序,編譯它之后將可執行文件執行路徑寫入環境變量

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

獲取proto包

go get github.com/golang/protobuf/proto

在go中使用

protobuf的使用方法是將數據結構寫入到.proto文件中,使用protoc編譯器編譯(間接使用了插件)得到一個新的go包,里面包含go中可以使用的數據結構和一些輔助方法。

編寫test.proto文件

 package example;
 
 enum FOO { X = 17; };
 
 message Test {
  required string label = 1;
  optional int32 type = 2 [default=77];
  repeated int64 reps = 3;
  optional group OptionalGroup = 4 {
  required string RequiredField = 5;
  }
 }

    編譯:

    執行 protoc --go_out=. *.proto 生成 test.pb.go 文件

    將test.pb.go文件放入example文件夾(對應上面package)中,作為example包

try

 package main

 import (
  "log"

  "github.com/golang/protobuf/proto"
  "example"
 )

 func main() {
  test := example.Test {
   Label: proto.String("hello"),
   Type: proto.Int32(17),
   Reps: []int64{1, 2, 3},
   Optionalgroup: example.Test_OptionalGroup {
    RequiredField: proto.String("good bye"),
   },
  }
  data, err := proto.Marshal(test)
  if err != nil {
   log.Fatal("marshaling error: ", err)
  }
  newTest := example.Test{}
  err = proto.Unmarshal(data, newTest)
  if err != nil {
   log.Fatal("unmarshaling error: ", err)
  }
  // Now test and newTest contain the same data.
  if test.GetLabel() != newTest.GetLabel() {
   log.Fatalf("data mismatch %q != %q", test.GetLabel(), newTest.GetLabel())
  }
  //test.GetOptionalgroup().GetRequiredField()
  //etc
 }

一些對應關系

  • message Test對為 struct 結構,其屬性字段有了對應的get方法,在go中可以使用test.GetLabel()test.GetType()獲取test對象的屬性
  • OptionalGroup對應為 struct中的內嵌struct
  • proto文件中repeated屬性對于slice結構
  • test.Reset()可以使其所有屬性置為0值
  • 使用Marshal和Unmarshal可以輕松的編碼和解碼

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • 詳解vue中使用protobuf踩坑記
  • vue中使用protobuf的過程記錄
  • Android中使用protobuf的具體示例
  • C#使用Protocol Buffer(ProtoBuf)進行Unity中的Socket通信
  • Protobuf的簡要介紹及使用詳解

標簽:瀘州 昭通 泰安 駐馬店 晉中 滄州 東營 阿壩

巨人網絡通訊聲明:本文標題《在go語言中安裝與使用protobuf的方法詳解》,本文關鍵詞  在,語,言中,安裝,與,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《在go語言中安裝與使用protobuf的方法詳解》相關的同類信息!
  • 本頁收集關于在go語言中安裝與使用protobuf的方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 成人国产精品一级毛片视频毛片 | 蘑菇短视频app免费版本下载| 一级做a爰片久久毛片A片黑人大| 艳肉乱痕1一12章精汁欲液| 欧美日韩精品视频二区| 国产伦子系列午睡沙发| 国产一级婬片A片久久久网站入口 无码人妻精品一区二区三区-电影 | xxxx美国老师1819| 特大欧美黑人巨大XXOO| 精品无码久久国产2022| 国内精品久久久久久久久久影视| 亚洲日本va中文字幕区| 性色麻豆69精品一级A片| 9999啪啪片人妻熟女漫画AV| 麻椒豆app免费版下载| 欧洲裸妇图片大全| 性裸交╳??Ⅹ动漫| 不戴套把她日出了水好爽免费 | 成人爽a毛片在线视频| 三级在线观看视频| 国产精品国模沟沟AV视频 | 丝袜高跟浓精受孕h文| 黄色视屏免费观看| 男男被爆?动漫羞羞动漫推荐| 国产91无套粉嫩白浆在线网站| 色一乱一伦一区一直爽| 久久国产精品一国产精品金尊 | 欧美日韩亚洲精品一区二区在线| 美女的胸没遮拦图片| 涩多多在线观看| 在线观看片成人免费视频| 台湾三级无删版在线观看| 男女性高爱潮高清免费观看| 台湾踩踏俱乐部| 办公室被主人狠狠道具调教| 久久成人毛片| 男女真人无遮挡一进一出视频| 91?国产丝袜在线播放竹菊| 三级情感伦理片| 成全我在线观看免费观看| 99热在这里只有免费精品|