ホームページ  >  記事  >  バックエンド開発  >  Goのプロトコルバッファ定義で再定義されたフィールドを修正するにはどうすればよいですか?

Goのプロトコルバッファ定義で再定義されたフィールドを修正するにはどうすればよいですか?

王林
王林転載
2024-02-06 11:39:04612ブラウズ

如何修复 Go 中协议缓冲区定义中重新定义的字段?

質問内容

プロバイダーの .proto ファイルを使用して gRPC クライアントを構築していますが、同じ名前の値を含む列挙がいくつかあります。 。

リーリー

そのため、.proto ファイルの Go サービスを生成して実行しようとすると、次のエラーが発生します:

リーリー

メッセージ内で列挙型を移動しようとしました。たとえば、図形内で色を移動したところ、これにより別の名前空間が提供されることが期待されました。しかし、それは無駄です。生成されたコードは定数ブロックを宣言しており、メッセージでは希望する名前の間隔が提供されません。これは C# で機能します。

リーリー

この問題を解決する方法について何かアイデアはありますか?


正解


提供されたコードの主な問題は、生成された Go コードに NONE という名前の 2 つの名前が含まれていることであるため、列挙値の名前を変更する必要があります。 定数。1 つは Color 列挙型からのもの、もう 1 つは Style 列挙型からのものです。 Go では、生成された protobuf コード内のすべての定数がパッケージ レベルで存在し、パッケージのグローバル変数になるため、これにより名前の競合が発生します。 それで、おそらくこれを試してみてください:

リーリー

以上がGoのプロトコルバッファ定義で再定義されたフィールドを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。