一、介紹
protobuf是一種與語言無關、與平台無關的可擴展的插件,用於序列化結構化數據。
只需要定義一下protobuf結構的文件 .proto 然後就可以使用protoc 命令生成對應的編程語言的結構的文件。
protoc在設計上把protobuf和不同的語言解耦了,底層用c++來實現protobuf結構的存儲,然後通過插件的形式來生成不同語言的源碼。
可以把protoc的編譯過程分成簡單的兩個步驟
- 解析.proto文件,轉譯成protobuf的原生數據結構在內存中保存
- 把protobuf相關的數據結構傳遞給相應語言的編譯插件,由插件負責根據接收到的protobuf原生結構渲染輸出特定語言的模板。
通過這種機制,protobuf支持了絕大多數主流語言。如Java、Python、Objective-C 和 C++ Kotlin、Dart、Go、Ruby和C#等,生成的代碼。
二、操作系統安裝 protobuf
2.1 安裝 protobuf
我們這裏使用brew安裝,只要輸入下面的命令就可以了
brew install protobuf
安裝完成後,輸入 protoc --version 查看是否生效
➜ protoc --version
libprotoc 3.21.7
安裝成功。
三、安裝protobuf對應的go語言工具protoc-gen-go
3.1 使用go install 安裝 protoc-gen-go最新版本
go install github.com/golang/protobuf/protoc-gen-go@latest
使用go install 會安裝在 $GOPATH下的bin目錄
我們看一下$GOPATH
➜ echo $GOPATH
/Users/hisheng/go/go@1.18
然後我們進入到這個bin目錄
➜ cd /Users/staff/go/go@1.18/bin
會看到剛安裝的 protoc-gen-go