一、protobuf 介紹
Protobuf全稱是Google Protocol Buffer,是一種高效輕便的結構化數據存儲方式,如同xml,json常用來序列化數據,用來存儲以及傳輸。
相當於json和xml,Protobuf佔用的寬帶更小,序列化更快。目前在grpc等服務中,越來越流行。
二、protoc
protoc是 protocol compiler,是protocol 編譯器。
當我們從 https://github.com/protocolbu...官網安裝protobuf後,在命令行,就會有一個 protoc shell腳本命令。
目前 protoc 編譯器支持的語言有以下幾種。
我們使用protoc 命令行可以把.proto 文件轉譯成各種編程語言對應的源碼,包含數據類型定義、調用接口等。
protoc 命令把.proto文件轉成go的過程有兩步
- 解析.proto文件,轉譯成protobuf的原生數據結構在內存中保存;
- 把protobuf相關的數據結構傳遞給相應語言的編譯插件,由插件負責根據接收到的protobuf原生結構渲染輸出特定語言的模板。(對應go的protoc-gen-go)
三、protoc-gen-go
在官方文檔裏,
https://pkg.go.dev/github.com...裏説明到
protoc-gen-go 是 Google protobuf編譯器生成 Go 代碼的插件。
安裝成功後再 GOPATH裏可以調用
protoc-gen-go
protoc裏面”go“後綴是調用這個插件,比如生產.pb.go代碼
protoc --go_out=paths=source_relative:. path/to/file.proto
其中"--go_out="表示生成Go文件,protoc會自動尋找GOPATH(默認為系統GOPATH路徑)中的protoc-gen-go執行文件。
執行這個命令會生成.pb.go文件,文件地址如下:
path/to/file.pb.go