对于我的应用程序,字符串是否可读并不重要。
原文由 abw333 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果它是“单向”序列化(用于调试或日志记录或其他),那么 fmt.Printf("%#v", var)
非常好。 (更新:要将输出放入字符串而不是打印它,请使用 str := fmt.Sprintf("%#v", var)
。
如果大小很重要,您可以使用 %v
,但我喜欢 %#v
因为它还将包含字段名称和结构类型的名称。
第三个变体是 %+v
它将包括字段名称,但不包括结构类型。
它们都记录在 fmt 文档 的顶部。
如果您需要双向序列化 JSON、Gob 或 XML 是 Go 中最简单/内置的选项,请参阅 编码包。
原文由 Ask Bjørn Hansen 发布,翻译遵循 CC BY-SA 3.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答900 阅读✓ 已解决
2 回答2.2k 阅读
将结构编码为字符串的一种流行方法是使用 JSON 。
你有一定的局限性,比如不能获取所有信息(比如每个字段的具体类型),只能序列化导出的字段,不能处理递归值。但它是序列化数据的一种简单标准方法。
工作示例:
给出这个输出:
https://play.golang.org/p/sx-xdSxAOG