4

複雑なインターフェイス(template.Template)をシリアル化する必要があります。未エクスポートのフィールドがたくさんあり、ゴブはそれらを操作したくありません。助言がありますか?

PS実際、私は解析されたテンプレートをAppEngineのmemcacheに配置しようとしています。

4

2 に答える 2

5

簡単に言うと、通常、エクスポートされていないフィールドには理由がありtemplate.Templateます。たとえば、解析中に変更される情報が含まれているため、を使用して自分でシリアル化することはお勧めしませんreflect。ただし、GobEncoderおよびGobDecoderインターフェイスは最近gob;に追加されました。エクスポートされていないフィールドを持つ複雑な構造体をシリアル化する必要がある場合は、パッケージの作成者にこれらのインターフェイスを実装するように勧めてください。さらに良いことに、それらを自分で実装し(難しいことではありませんtemplate.Template)、パッチを提供します。

于 2011-05-13T21:17:12.943 に答える
1

gobタイプが別のパッケージ(テンプレートなど)からのものである場合、これはGoの現在のシリアル化ライブラリ( 、、jsonbsonなど)では実行できません。フィールドはエクスポートされていないため、これも実行しないでください。

ただし、本当に必要な場合は、パッケージreflect、具体的Value.Field()には友人を使用して独自のシリアライザーを作成し、エクスポートされていないフィールドを取得できます。次に、後でデコードできるようにそれらを保存する必要があります。

于 2011-05-13T16:32:24.253 に答える