首頁 > 後端開發 > Golang > 主體

我想從 cmd 的 proto 檔案產生 protobuf,而不使用'option go_package ”

王林
發布: 2024-02-09 15:54:14
轉載
942 人瀏覽過

我想从 cmd 的 proto 文件生成 protobuf,而不使用“option go_package ”

php小編草莓,你提到你想從cmd的proto檔案產生protobuf,而不使用"option go_package"。在這種情況下,你可以嘗試使用其他方法來產生protobuf檔案。有一些工具可以幫助你實現這個目標,例如使用外掛程式或自訂腳本來自動產生protobuf檔案。這樣你就可以不依賴"go_package"選項,而是透過其他方式來產生所需的protobuf檔案。透過這種方法,你可以更有彈性地處理你的需求。

問題內容

我必須從匯入另一個 proto 檔案的 proto 檔案產生 protobuf 檔案。 另一個要求是,它必須由 cmd 產生(透過不在 proto 檔案中定義「option go_package」)。

解決方法

假設您有 3 個檔案 foo.protopoo.protozoo.proto。檔案 foo.protopoo.protozoo.proto 匯入訊息結構。您需要按照特定的順序編寫命令,首先將foo.proto(從其他導入) 放在前面,然後將poo.proto(向其他導入)zoo .proto(導入其他) 之後。

這是在不定義選項go_package的情況下產生protobuf的命令

protoc --proto_path=./ --go_out=./pb --go-grpc_out=./pb
--go_opt=mfoo.proto=./ --go-grpc_opt=mfoo.proto=./
--go_opt=mpoo.proto=./ --go-grpc_opt=mpoo.proto=./
--go_opt=mzoo.proto=./ --go-grpc_opt=mzoo.proto=./
foo.proto goo.proto zoo.proto
登入後複製

請注意檔案名稱前的 m,它會取代程式碼中的選項 go_package

foo.proto

#
syntax = "proto3";
import "goo.proto";
import "zoo.proto";

service foo {
    rpc foorpc(poomessage) returns (zoomessage) {}
}
登入後複製

poo.proto

#
syntax = "proto3";

message poomessage {
    string body = 1;
}
登入後複製

zoo.proto

#
syntax = "proto3";

message ZooMessage {
    string body = 1;
}
登入後複製

以上是我想從 cmd 的 proto 檔案產生 protobuf,而不使用'option go_package ”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!