Serialization 如何序列化具有未报告字段的复杂接口?

Serialization 如何序列化具有未报告字段的复杂接口?,serialization,go,gob,Serialization,Go,Gob,我需要序列化一些复杂的接口(template.template)。它有许多未报告的字段,gob不想使用它们。有什么建议吗 另外,实际上,我试图将一个解析过的模板放到appengine上的memcache中。如果该类型来自另一个包(例如模板),则无法使用任何当前的序列化libs for Go(gob,json,bson等)完成此操作。也不应该这样做,因为字段未报告 但是,如果确实需要,可以使用包编写自己的序列化程序,特别是Value.Field()和friends来获取未报告的字段。然后你只需要以

我需要序列化一些复杂的接口(template.template)。它有许多未报告的字段,gob不想使用它们。有什么建议吗


另外,实际上,我试图将一个解析过的模板放到appengine上的memcache中。

如果该类型来自另一个包(例如模板),则无法使用任何当前的序列化libs for Go(
gob
json
,bson等)完成此操作。也不应该这样做,因为字段未报告


但是,如果确实需要,可以使用包编写自己的序列化程序,特别是
Value.Field()
和friends来获取未报告的字段。然后你只需要以一种可以在以后解码的方式来存储它们。

简单的回答是,未报告的字段通常是有原因的——例如,包含在解析过程中更改的信息——因此我建议不要自己用
reflect
来序列化它们。然而,
GobEncoder
GobDecoder
接口最近被添加到了
gob
;如果需要序列化包含未报告字段的复杂结构,请鼓励包的作者实现这些接口。更好的是,自己实现它们(对于
template.template
)和您的补丁程序应该不难