前言
protoc
是 protobuf
檔案(.proto)的編譯器,可以藉助這個工具把 .proto
檔案轉譯成各種程式語言對應的原始碼,包含資料型別定義、呼叫介面等。
protoc
在設計上把 protobuf
和不同的語言解耦了,底層用 c++
來實現 protobuf
結構的儲存,然後透過外掛的形式來生成不同語言的原始碼。
可以把 protoc
的編譯過程分成簡單的兩個步驟:
1)解析 .proto
檔案,轉譯成 protobuf
的原生資料結構在記憶體中儲存;
2)把 protobuf
相關的資料結構傳遞給相應語言的編譯外掛,由外掛負責根據接收到的 protobuf
原生結構渲染輸出特定語言的模板。
protoc-gen-go
是 protobuf
編譯外掛系列中的Go版本。
設定開啟GO111MODULE、配置代理
-
go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.cn/
安裝 kratos
-
go install github.com/go-kratos/kratos/cmd/kratos/v2@latest kratos upgrade go mod tidy # 更新依賴庫
安裝 protobuf 相關庫
-
# 安裝 proto go get -u github.com/golang/protobuf/proto # kratos升級到最新版 sudo kratos upgrade # 安裝 protoc-gen-go-grpc go get -u google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest # 安裝 protoc-gen-go-http go get -u github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2 go install github.com/go-kratos/kratos/cmd/protoc-gen-go-http/v2 # 安裝 protoc-gen-go go get -u github.com/golang/protobuf/protoc-gen-go@latest go install github.com/golang/protobuf/protoc-gen-go@latest # 安裝 protoc-gen-go-errors go get -u github.com/go-kratos/kratos/cmd/protoc-gen-go-errors/v2 go install github.com/go-kratos/kratos/cmd/protoc-gen-go-errors/v2 # 安裝 protoc-gen-openapiv2 go get -u github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 # 安裝 protoc-gen-validate go get -u github.com/envoyproxy/protoc-gen-validate go install github.com/envoyproxy/protoc-gen-validate
生成所有proto原始碼、wire等等,下面命令二選一
-
go generate ./... go run generate.go ./..
執行專案
kratos run