ホームページ  >  記事  >  バックエンド開発  >  Protobuf メッセージは protoreflect.ProtoMessage を実装しません (ProtoReflect メソッドにはポインター レシーバーがあります)

Protobuf メッセージは protoreflect.ProtoMessage を実装しません (ProtoReflect メソッドにはポインター レシーバーがあります)

WBOY
WBOY転載
2024-02-09 18:27:20529ブラウズ

Protobuf メッセージは protoreflect.ProtoMessage を実装しません (ProtoReflect メソッドにはポインター レシーバーがあります)

php エディタ Xinyi はここで問題を紹介します。Protobuf メッセージで、protoreflect.ProtoMessage インターフェイスの ProtoReflect メソッドが実装されていないことがわかり、このメソッドはポインタ受信デバイスを使用しています。 。この質問は混乱や不便を引き起こす可能性があります。この記事では、この問題をより深く理解し、対処できるように、この問題の原因と考えられる解決策を詳しく説明します。一緒に調べてみましょう!

質問の内容

protobuf メッセージがインポートされました "google/protobuf/any.proto":

リーリー

anypb を使用して、data フィールド内の別の protobuf をシリアル化しようとしています:

リーリー

コンパイル後に次のエラーが発生します:

リーリー

ドキュメントによると、ここでは何も珍しいことはしていません。この問題はどうすれば解決できますか?

これは、シリアル化して data フィールド内に保存しようとしている protobuf です。 lootcrate.proto:

message mintrecord {
    ...
    google.protobuf.any data = 11;
    ...
}

解決策

サラス・サダシヴァン・ピライが正しいです。
コードを次のように変更します:

リーリー

以上がProtobuf メッセージは protoreflect.ProtoMessage を実装しません (ProtoReflect メソッドにはポインター レシーバーがあります)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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