複雑なインターフェイス(template.Template)をシリアル化する必要があります。未エクスポートのフィールドがたくさんあり、ゴブはそれらを操作したくありません。助言がありますか?
PS実際、私は解析されたテンプレートをAppEngineのmemcacheに配置しようとしています。
複雑なインターフェイス(template.Template)をシリアル化する必要があります。未エクスポートのフィールドがたくさんあり、ゴブはそれらを操作したくありません。助言がありますか?
PS実際、私は解析されたテンプレートをAppEngineのmemcacheに配置しようとしています。
簡単に言うと、通常、エクスポートされていないフィールドには理由がありtemplate.Template
ます。たとえば、解析中に変更される情報が含まれているため、を使用して自分でシリアル化することはお勧めしませんreflect
。ただし、GobEncoder
およびGobDecoder
インターフェイスは最近gob
;に追加されました。エクスポートされていないフィールドを持つ複雑な構造体をシリアル化する必要がある場合は、パッケージの作成者にこれらのインターフェイスを実装するように勧めてください。さらに良いことに、それらを自分で実装し(難しいことではありませんtemplate.Template
)、パッチを提供します。
gob
タイプが別のパッケージ(テンプレートなど)からのものである場合、これはGoの現在のシリアル化ライブラリ( 、、json
bsonなど)では実行できません。フィールドはエクスポートされていないため、これも実行しないでください。
ただし、本当に必要な場合は、パッケージreflect
、具体的Value.Field()
には友人を使用して独自のシリアライザーを作成し、エクスポートされていないフィールドを取得できます。次に、後でデコードできるようにそれらを保存する必要があります。