クライアントとサーバーアプリケーション間の通信にgrpc golangを使用しています。以下はprotocバッファのコードです。
syntax = "proto3";
package Trail;
service TrailFunc {
rpc HelloWorld (Request) returns (Reply) {}
}
// The request message containing the user's name.
message Request {
map<string,string> inputVar = 1;
}
// The response message containing the greetings
message Reply {
string outputVar = 1;
}
Map [string] stringの代わりに、タイプmap [string] interface {}のフィールドinputVarをメッセージデータ構造内に作成する必要があります。どうすれば達成できますか?前もって感謝します。
proto3のタイプはAny
です
import "google/protobuf/any.proto";
message ErrorStatus {
string message = 1;
repeated google.protobuf.Any details = 2;
}
しかし、その実装を見ると、単純に
message Any {
string type_url = 1;
bytes value = 2;
}
おそらくリフレクションと中間タイプを使用して、このようなメッセージを自分で定義する必要があります。
サンプルアプリケーション を参照
少し冗長になりますが、プロトコルバッファの「構造体」タイプは、おそらくgolangのmap [string] interface {}に近いでしょう。
しかし、インターフェイスのように{}は、実際に格納されているタイプが何であるかを決定するために、リフレクションスタイルのオーバーヘッドを取ります。
たとえば、ここのコメントを参照してください: https://github.com/golang/protobuf/issues/37