Golang Go语言中分享一下自己在用的 go-dump 库
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 😂)
更多关于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
都能为你提供有力的支持。