GRPC之protobf

一征候、Protobuf安裝

下載地址:Protocol Buffers
比如味咳,我們下載3.14.0,下載地址為:
https://github.com/protocolbuffers/protobuf/releases?expanded=true&page=4&q=v3.14.0
根據我們的電腦系統(tǒng)下載對應的二進制包陷舅,一般解壓到GOPATH/bin目錄下。
這里有個地方要注意审洞,下載的文件中有個README文件

Protocol Buffers - Google's data interchange format
Copyright 2008 Google Inc.
https://developers.google.com/protocol-buffers/

This package contains a precompiled binary version of the protocol buffer
compiler (protoc). This binary is intended for users who want to use Protocol
Buffers in languages other than C++ but do not want to compile protoc
themselves. To install, simply place this binary somewhere in your PATH.

If you intend to use the included well known types then don't forget to
copy the contents of the 'include' directory somewhere as well, for example
into '/usr/local/include/'.

Please refer to our official github site for more installation instructions:
  https://github.com/protocolbuffers/protobuf

提示我們莱睁,如果需要使用include目錄中的內容,則我們需要把include目錄也一同拷貝到和bin目錄并列的位置芒澜,比如:


image.png

如上圖是我本地的一個位置放置關系仰剿,默認的include目錄中有一個google的目錄,這樣copy過來后痴晦,如果我們需要在proto文件中import google目錄中的文件就可以直接寫相對路徑了酥馍,比如:


image.png

這里顯示的是紅色的,不影響編譯阅酪,這是goland ide的問題旨袒,只要我們設置下ide就可以了。這里指定的位置就是我們上面安裝的時候include放置的位置术辐。設置成功后再看回到proto文件就是正常的了
image.png

編譯生成go的pb文件需要插件砚尽,安裝:

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

如果我們用到了go-micro微服務框架,還需要安裝

go get github.com/micro/micro/v2/cmd/protoc-gen-micro

二辉词、Protobuf語法解析

標量類型 (Scalar Value Types)

proto類型 Go類型 備注
double float64
float float
int32 int32 編碼負數值相對低效
int64 int64 編碼負數值相對低效
uint32 uint32
uint64 uint64
sint32 int32 當值為負數時候必孤,編碼比int32更高效
sint64 int64 當值為負數時候,編碼比int64更高效
fixed32 uint32 當值總是大于2^28時瑞躺,編碼比uint32更高效
fixed64 uint64 當值總是大于2^56時敷搪,編碼比uint32更高效
sfixed32 int32
sfixed64 int64
bool bool
string string 只能是utf-8編碼或者7-bit ASCII文本,且長度不得大于2^32
bytes []byte 不大于2^32的任意長度字節(jié)序列

message消息
// 普通的message
message SearchRequest {
    string query = 1;
    int32 page_number = 2;
    int32 result_per_page = 3;
}

// 枚舉 enum
enum Status {
    STATUS_UNSPECIFIED = 0;
    STATUS_OK  = 1;
    STATUS_FAIL= 2;
    STATUS_UNKNOWN = -1; // 不推薦有負數
}

// 保留字段
message ReservedMessage {
    reserved 2, 15, 9 to 11;
    reserved "foo", "bar";
    // string abc = 2;  // 編譯報錯
    // string foo = 3;  // 編譯報錯
}

// 保留枚舉
enum ReservedEnum {
    reserved 2, 15, 9 to 11, 40 to max;
    reserved "FOO", "BAR";
    // FOO = 0; // 編譯報錯 
    F = 0;
}

// nested 嵌套message
message SearchResponse {
    message Result {
        string url = 1 ;
        string title = 2;
    }
    enum Status {
        UNSPECIFIED = 0;
        OK  = 1;
        FAIL= 2;
    }
    Result results = 1;
    Status status = 2;
}

// repeated
message RepeatedMessage {
    repeated SearchRequest requests = 1;
    repeated Status status = 2;
    repeated int32 number = 3;
}

// map類型
message MapMessage{
    map<string, string> message = 1;
    map<string, SearchRequest> request = 2;
}

// any 類型
import "google/protobuf/any.proto";
message AnyMessage {
    string message = 1;
    google.protobuf.Any details = 2;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末幢哨,一起剝皮案震驚了整個濱河市赡勘,隨后出現的幾起案子,更是在濱河造成了極大的恐慌捞镰,老刑警劉巖闸与,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毙替,死亡現場離奇詭異,居然都是意外死亡践樱,警方通過查閱死者的電腦和手機厂画,發(fā)現死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拷邢,“玉大人袱院,你說我怎么就攤上這事〔t稼!?“怎么了坑填?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長弛姜。 經常有香客問我脐瑰,道長,這世上最難降的妖魔是什么廷臼? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任苍在,我火速辦了婚禮,結果婚禮上荠商,老公的妹妹穿的比我還像新娘寂恬。我一直安慰自己,他們只是感情好莱没,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布初肉。 她就那樣靜靜地躺著,像睡著了一般饰躲。 火紅的嫁衣襯著肌膚如雪牙咏。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天嘹裂,我揣著相機與錄音妄壶,去河邊找鬼。 笑死寄狼,一個胖子當著我的面吹牛丁寄,可吹牛的內容都是我干的。 我是一名探鬼主播泊愧,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼伊磺,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了删咱?” 一聲冷哼從身側響起屑埋,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腋腮,沒想到半個月后雀彼,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡即寡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年徊哑,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片聪富。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡莺丑,死狀恐怖,靈堂內的尸體忽然破棺而出墩蔓,到底是詐尸還是另有隱情梢莽,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布奸披,位于F島的核電站昏名,受9級特大地震影響,放射性物質發(fā)生泄漏阵面。R本人自食惡果不足惜轻局,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望样刷。 院中可真熱鬧仑扑,春花似錦、人聲如沸置鼻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春奔穿,著一層夾襖步出監(jiān)牢的瞬間番挺,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工簇秒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓肺缕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親授帕。 傳聞我的和親對象是個殘疾皇子同木,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內容