日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

protobuf3使用,golang语言实现

發布時間:2023/12/18 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 protobuf3使用,golang语言实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.安裝protobuf3版本

下載安裝protobuf-3.1.0版本,?把 F:\Program Files\protoc-3.3.0-win32\bin\protoc.exe 文件路徑添加到環境變量中。

查看是否安裝成功,在命令行輸入:?proto --version

安裝成功之后,就可以按照protobuf的規則編碼和解碼任何我們想要傳輸的數據了。

比起xml和json形式的數據傳輸,protobuf擁有更高的數據壓縮比和壓縮效率。

2.寫test.proto文件

? 相當于給一個對象添加相應的屬性。

//指定版本 //注意proto3與proto2的寫法有些不同 syntax = "proto3";//包名,通過protoc生成時go文件時 package test;// 班級 message Class {int32 num = 1;repeated Student students = 2; }// 學生 message Student {string name = 1;int32 age = 2;Sex sex = 3; }//性別 enum Sex {MAN = 0;WOMAN = 1; }

3.生成文件test.pb.go文件

.proto文件寫好之后,不方便我們在代碼中使用,需要利用剛才安裝的proto工具生成一個我們可以在代碼中方便實際調用的類。?

這個類生成之后就變成我們和protobuf交換數據的橋梁,我們可以看懂和使用,protobuf也可以識別和解析。

生成test.pb.go文件之后.proto就不需要了,但是為了后期更改和代碼可讀性繼續保留該文件。

test.pb.go具體代碼我就不貼出來了,命令如下:? protoc --go_out=. ?*.proto

?

4.測試和驗證

package mainimport ("github.com/goinaction/learning/proto3-my/test""github.com/gogo/protobuf/proto""io/ioutil""os""log" )func write() {c1 := &test.Class{Num: 1,Students: []*test.Student{{Name: "xiaoming", Age: 21, Sex: test.Sex_MAN},{Name: "xiaohua", Age: 21, Sex: test.Sex_WOMAN},{Name: "xiaojin", Age: 21, Sex: test.Sex_MAN},},}// 使用protobuf工具把struct數據類型格式化成字節數組(壓縮和編碼)data, _ := proto.Marshal(c1)// 把字節數組寫入到文件中ioutil.WriteFile("test.txt", data, os.ModePerm) }func read() {// 以字節數組的形式讀取文件內容data, _ := ioutil.ReadFile("test.txt")class := new(test.Class)// 使用protobuf工具把字節數組解碼成struct(解碼)proto.Unmarshal(data, class)log.Println(class.Num)for _, v := range class.Students {log.Println(v.Name, v.Age, v.Sex)} }func main() {write()read() }

代碼輸出結果:

2018/11/02 16:18:52 1 2018/11/02 16:18:52 xiaoming 21 MAN 2018/11/02 16:18:52 xiaohua 21 WOMAN 2018/11/02 16:18:52 xiaojin 21 MAN

?

總結

以上是生活随笔為你收集整理的protobuf3使用,golang语言实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。