Golang Go语言中分享一下自己在用的 go-dump 库

发布于 1周前 作者 ionicwang 来自 Go语言

Golang Go语言中分享一下自己在用的 go-dump 库

先看效果:

aInt := 1
bStr := `sf`
cMap := map[string]interface{}{"name": "z", "age": 14}
dArray := []interface{}{&cMap, aInt, bStr}

dump.Dump(aInt, &aInt, &bStr, bStr, cMap, dArray, cMap["name"], dArray[2], dArray[aInt])

https://i.imgur.com/bBV53DC.jpg

相比 print 会提供几个信息:

  • 代码行号
  • 变量名
  • 指针类型的展开(跟 json 一样,不支持循环引用)

为什么要搞这个东西?

之前调 Go 的代码的时候用 print,但是打出来的日志总是不知道在哪,经常还会看到别人使用 print("===ABC===")

后来用 GoLand 的 postfix 功能做了一键打印 json 。但脱离了 GoLand 就不太好使了,于是决定实现一个库,哪都能用。

再发一个 postfix 的方式,在 Goland 里还是挺好用的

https://i.imgur.com/WQaQFHq.gif

Repo 地址(好用的话不要忘了赏我一个 star 😂)

Github: https://github.com/Kretech/xgo/tree/master/dump


更多关于Golang Go语言中分享一下自己在用的 go-dump 库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

5 回复

star

更多关于Golang Go语言中分享一下自己在用的 go-dump 库的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你这个获取参数名的方式有点风骚,学习了

请教一下楼主,最里面是 ast 解析源码,那么如果在编译后没有源码的运行环境,parser.ParseFile 是不是就失效了,拿不到参数名?

对,在没有源码的运行环境是不行的。所以主要还是用在调试。

在Go语言开发中,go-dump 库是一个非常实用的工具,它主要用于方便地打印和调试Go语言中的变量。作为一个经常处理复杂数据结构的开发者,我在项目中频繁使用 go-dump 来快速查看和诊断数据状态。

go-dump 的一个显著优点是它的易用性。只需简单地引入库,并调用 dump.S()dump.F() 函数,就可以将变量以结构化的方式输出到标准输出或文件中。这对于调试嵌套结构、映射和切片等复杂类型特别有帮助,因为输出格式清晰且易于阅读。

此外,go-dump 还支持自定义输出格式和深度,这允许开发者根据具体需求调整输出内容。例如,在处理大型数据集时,可以通过限制输出深度来避免生成过多的调试信息,从而节省时间和资源。

另一个值得注意的特点是 go-dump 的性能。尽管它提供了丰富的功能,但在大多数情况下,它对程序性能的影响微乎其微。这使得它成为了一个可以安全集成到生产环境中的调试工具。

总的来说,go-dump 是一个强大且灵活的Go语言调试库。它极大地简化了变量检查和状态跟踪的过程,提高了开发效率。如果你还没有尝试过 go-dump,我强烈建议你将其添加到你的Go语言工具链中。无论是处理简单的数据结构还是复杂的业务逻辑,go-dump 都能为你提供有力的支持。

回到顶部