首頁  >  文章  >  後端開發  >  我想從 cmd 的 proto 檔案產生 protobuf,而不使用“option go_package ”

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

王林
王林轉載
2024-02-09 15:54:141058瀏覽

我想从 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刪除