win10下golang使用protobuf

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

json與protobuf做資料轉送對比:
json用起來的確很方便。但相對於protobuf資料量更大些。做一個移動端應用,為使用者省點流量還是很有必要的。正好也可以學習一下protobuf的使用

0、跟Json相比,protobuf 的優缺點:

優點:

  • 效能更高,更加規範;
  • 編解碼速度快,資料體積小;
  • 使用統一的規範,不用再擔心大小寫不同導致解析失敗等問題。

缺點:

  • 失去了一些便利性;
  • 改動協議欄位,需要重建檔案;
  • 資料沒有可讀性;

1、安裝protobuf庫檔案

方法(1)使用go get

go get github.com/golang/protobuf/proto(待驗證)

方法(2)下載檔案
或者直接通過protobuf下載連結,戳這裡上下載或git clone下來對應放到到 $GOPATH\src\golang.org\x\protobuf 中(可用)

2、protobuf的編譯器protoc

在protoc下載連結,戳這裡上找到protoc的壓縮包下載。並放到$GOROOT的bin目錄下。

3、protobuf的編譯器protoc

在go中使用protobuf,有兩個可選用的包goprotobuf(go官方出品)和gogoprotobuf(二選一即可)。
gogoprotobuf完全相容google protobuf,它產生的程式碼品質和編解碼效能均比goprotobuf高一些。
使用protobuf:

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

使用gogoprotobuf:(待驗證)
gogoprotobuf有兩個外掛程式可以使用(二選一即可):

  • protoc-gen-gogo:和protoc-gen-go產生的檔案差不多,效能也幾乎一樣(稍微快一點點)
  • protoc-gen-gofast:產生的檔案更複雜,效能也更高(快5-7倍)

//gogo
go get github.com/gogo/protobuf/protoc-gen-gogo
//gofast
go get github.com/gogo/protobuf/protoc-gen-gofast
//安裝gogoprotobuf庫檔案
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/gogoproto //這個不裝也沒關係
//產生編譯檔案
//gogo
protoc --gogo_out=. *.proto
//gofast
protoc --gofast_out=. *.proto

成功後會在GOPATH的第一個目錄的bin檔案夾下產生protoc-gen-go可執行檔(如果該路徑沒在系統的環境變數中,則需要將改路徑也加入到環境變數的path中去)。

4、使用protoc編譯.proto檔案成.pd.go檔案

命令列進入.proto檔案所在路徑,使用 命令:

protoc --go_out=. *.proto

會把.pd.go檔案產生到目前的目錄下,即完成編譯過程。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.