golang-protobuf使用
什麼是protobuf?
Protocol buffers是一個靈活的、高效的、自動化的用於對結構化資料進行序列化的協議,與XML、json相比,Protocol buffers序列化後的碼流更小、速度更快、操作更簡單。
安裝protoc工具
proto用來將.proto檔案轉化為自己使用的語言格式,我使用的是go語言,所以還要下載一個與protoc配合的外掛,一會再說這個外掛。
我使用的是linux環境,下載protoc原始碼, ofollow,noindex">下載地址 ,我選擇如圖的安裝包,可以不需要再編譯,直接將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