# linux
apt install -y protobuf-compiler
# mac
brew install protobuf
# 原始碼安裝
wget
unzip protobuf-all-3.5.1.zip
cd protobuf-3.5.1/
./configure
make
make
install
# 檢查是否安裝成功
protoc --version
# 官方
# 更快的
--go_out=
設定pb.go
**輸出根目錄plugins=grpc
生成grpc相關**
pulgins=paths=
在根路徑下設定構建目錄層級方式
source_relative
按照 proto 原始檔的目錄層級在根目錄下建立目錄層級
對repeated欄位使用複數
enum欄位名大寫下劃線
若第乙個字元是_,它將被替換為x
import
編譯器會在通過命令列引數--proto-path
中指定的資料夾中搜尋.proto
檔案
import
中指定的路徑和生成的go檔案引用的路徑無關,後者和option go_package
有關
需要將.proto
檔案移動到新位置時,可以在舊位置放置乙個虛擬.proto
檔案
package
屬於 proto 檔案自身的定義
在go的包名中會將.
自動轉換為_
option go_package
向後相容性
message定義可以被定義在其他訊息型別內部message編碼成二進位制訊息體時,字段編號1-15將會占用1個位元組,16-2047將占用兩個位元組
對於刪掉不用的字段,為了防止其他人重用了之前的字段編號,應該使用reserved
保留該編號
.proto
檔案中的注釋使用//
和/ ... /
map型別
列舉型別
訊息中的列舉,型別名字以訊息名開頭;對於包級別的列舉,不會改變名稱
編譯器會生成從整數值到字串名稱的對映以及從名稱到值的對映
.
├── api
│ ├── proto
│ │ ├── demo
│ │ │ └── api1.proto
│ │ ├── upstream1
│ │ │ ├── api1.proto
│ │ │ └── api2.proto
│ │ ├── downstream1
│ │ │ └── api1.proto
│ │ └── third_party
│ │ └── google
│ │ └── protobuf
│ │ └── empty.proto
│ └── thrift
├── go.mod
└── go.sum
syntax = "proto3";
package ;
option go_package="";
import "";
protoc -i=. -i=api/proto/thrid_party --go_out=plugins=grpc,paths=source_relative:. api/proto/demo/*.proto
protoc -i=. -i=api/proto/thrid_party --go_out=plugins=grpc,paths=source_relative:. api/proto/upstream1/*.proto
protoc -i=. -i=api/proto/thrid_party --go_out=plugins=grpc,paths=source_relative:. api/proto/downstream1/*.proto
protobuf基本操作1
最近領導分配了乙個任務,這個工程挺高階的,主要以前從沒有搞過,其中裡面有protobuf,以前從來沒有聽說過這個東西,最近在網上看了一些高人的帖子,才知道protobuf是什麼云云了,我的理解是,例如我們要用c 寫個什麼工程,c 是物件導向的,我們要寫很多類,估計都得寫上上百行,上千行的 但是現在用...
protobuf簡單使用
一 介紹 首先,protobuf是乙個開源專案,而且是後台很硬的開源專案。網上現有的大部分 至少80 開源專案,要麼是某人單幹 要麼是幾個閒雜人等合夥搞。而protobuf則不然,它是 鼎鼎大名的google公司開發出來,並且在google內部久經考驗的乙個東東。由此可見,它的作者絕非一般閒雜人等可...
C 使用protobuf簡述
首先,建立乙個c 4.5以上project,因為最新的protobuf依賴於c 5.0的語言特性。然後,我們通過nuget,為專案新增對protobuf的引用,搜尋protobuf就可以開始安裝了。安裝完成後,可以編譯一次工程,在bin debug目錄下就可以拿到google.protobuf.dl...