【问题标题】:Is there a Go Language equivalent to Perls' Dumper() method in Data::Dumper?Data::Dumper 中是否有与 Perls 的 Dumper() 方法等效的 Go 语言?
【发布时间】:2012-09-14 10:31:39
【问题描述】:

我查看了标题非常相似的帖子 (Is there a C equivalent to Perls' Dumper() method in Data::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 的状态......那么,还有什么知道这样的存在吗?或者也许有一些指针可以完成这样的事情?

【问题讨论】:

    标签: json xml perl go


    【解决方案1】:

    您好,欢迎参加,我本人是 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/

    【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 谢谢,这是非常有用的信息。 golang-pretty 正是我想要的
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 2012-06-06
      • 2011-07-21
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多