11

我查看了标题非常相似的帖子(Data::Dumper 中是否有一个 C 等效于 Perls 的 Dumper() 方法?),关于 C 等效于Data::Dumper::Dumper();. 我对 Go 语言有类似的问题。

我是一名 Perl 狂热者,也是一名编程爱好者,Data::Dumper每天使用类似的后代数百次。我开始学习 Go,因为它看起来是一门有趣且有趣的语言,它可以让我摆脱 Perl 的陈规陋习,同时让我看到做事的新方法......其中一件事我真正想要的是这样的:

fmt.Println(dump.Dumper(decoded_json))

查看生成的数据结构,例如Data::Dumper将 JSON 转换为哈希数组。在 Go 中看到这一点,将帮助我了解如何构建和使用数据。在我学习围棋的过程中,这样的事情会被认为是一个重要的瞬间。

与C对应文章中的陈述相反,我相信我们可以写这个,因为我会将 Dumper 传递给 Println,在编译完任何 JSON 字符串或 XML 页面后,我传入并解码。我应该能够看到解码的结果,处于类似 Dumper 的状态......那么,还有没有人知道存在这样的事情?或者也许有一些指针可以完成这样的事情?

4

3 回答 3

12

嗨,欢迎来到我自己是前 perl 黑客。

至于您的问题, encoding/json 包可能是您发现的最接近 go data 漂亮打印机的包。我不确定你是否真的需要它。Data::Dumper 在 perl 中非常棒的原因之一是因为很多时候你真的不知道你正在使用的数据的结构,而不用肉眼检查它。尽管一切都是特定的类型,并且每个特定的类型都有特定的结构。如果您想知道数据会是什么样子,那么您可能只需要查看它的定义。

您应该查看的其他一些工具包括:

  • fmt.Println("%#v", data)将以 go-syntax 形式打印数据。
  • fmt.Println("%T", data)将以 go-syntax 形式打印数据的类型。
  • 此处记录了更多 fmt 格式字符串选项:http: //golang.org/pkg/fmt/
于 2012-09-22T02:09:16.637 回答
8

我找到了几个包来帮助在 Go 中可视化数据。

我个人最喜欢的 - https://github.com/davecgh/go-spew

还有 - https://github.com/tonnerre/golang-pretty

于 2014-01-31T19:33:59.443 回答
6

我不熟悉 Perl 和 Dumper,但根据我对您的帖子和相关 C 帖子(以及函数的名称!)的理解,它输出数据结构的内容。

您可以使用fmt 包的 %v 动词来执行此操作。我假设您的 JSON 数据被解码为结构或映射。usingfmt.Printf("%v", json_obj)将输出值,而 %+v 将添加字段名称(对于结构 - 如果它的映射没有区别, %v 将同时输出键和值),并且 %#v 也将输出类型信息。

于 2012-09-22T02:11:25.533 回答