goutil/dump - 打印漂亮易读的go数据

inhere · · 1654 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

`gookit/goutil/dump` - 是一个golang数据打印工具包,可以打印出漂亮易读的go slice, map, struct数据。 **主要功能:** * 使用简单,直接调用 `dump.P(vars...)` 即可 * 支持所有的基础数据类型 * 支持slice, map, struct数据结构 * 支持传入打印多个变量 * 默认输出调用位置,方便使用 * 支持自定义部分能力,如 缩进,色彩主题等 **效果预览:** ![image.png](https://gitee.com/gookit/goutil/raw/master/dump/_examples/struct.png) > * Gitee: [https://gitee.com/gookit/goutil](https://gitee.com/gookit/goutil) * Github: [https://github.com/gookit/goutil/](https://github.com/gookit/goutil) * GoDoc: [https://pkg.go.dev/github.com/gookit/goutil/dump](https://pkg.go.dev/github.com/gookit/goutil/dump) ## 打印基础类型 ```go package main import "github.com/gookit/goutil/dump" // rum demo: // go run ./dump/_examples/basic_types.go func main() { dump.P( nil, true, 12, int8(12), int16(12), int32(12), int64(12), uint(22), uint8(22), uint16(22), uint32(22), uint64(22), float32(23.78), float64(56.45), 'c', byte('d'), "string", ) } ``` **输出效果:** ![image](https://gitee.com/gookit/goutil/raw/master/dump/_examples/basic_types.png) ## 打印slice 打印 array, slice 都会一行一个元素输出,同时会在最后输出长度。 ```go package main import "github.com/gookit/goutil/dump" // rum demo: // go run ./dump/_examples/slice.go func main() { dump.P( []byte("abc"), []int{1, 2, 3}, []string{"ab", "cd"}, []interface{}{ "ab", 234, []int{1, 3}, []string{"ab", "cd"}, }, ) } ``` **输出效果:** ![image](https://gitee.com/gookit/goutil/raw/master/dump/_examples/slice.png) ## 打印map 打印map数据结构,会一行一个元素输出,同时会在最后输出map长度。 ```go package main import "github.com/gookit/goutil/dump" // rum demo: // go run ./map.go // go run ./dump/_examples/map.go func main() { dump.P( map[string]interface{}{ "key0": 123, "key1": "value1", "key2": []int{1, 2, 3}, "key3": map[string]string{ "k0": "v0", "k1": "v1", }, }, ) } ``` **输出效果:** ![image](https://gitee.com/gookit/goutil/raw/master/dump/_examples/map.png) ## 打印struct 打印struct数据,指针类型会自动打印底层真实数据 ```go package main import ( "fmt" "github.com/gookit/color" "github.com/gookit/goutil/dump" ) // rum demo: // go run ./struct.go // go run ./dump/_examples/struct.go func main() { s1 := &struct { cannotExport map[string]interface{} }{ cannotExport: map[string]interface{}{ "key1": 12, "key2": "abcd123", }, } s2 := struct { ab string Cd int }{ "ab", 23, } color.Infoln("- Use fmt.Println:") fmt.Println(s1, s2) color.Infoln("\n- Use dump.Println:") dump.P( s1, s2, ) } ``` **输出效果:** ![image](https://gitee.com/gookit/goutil/raw/master/dump/_examples/struct.png) ## 自定义dumper 支持自定义dumper一些选项。如 缩进,色彩主题等 ```go // Options for dump vars type Options struct { // Output the output writer Output io.Writer // NoType dont show data type TODO NoType bool // NoColor don't with color NoColor bool // IndentLen width. default is 2 IndentLen int // IndentChar default is one space IndentChar byte // MaxDepth for nested print MaxDepth int // ShowFlag for display caller position ShowFlag int // MoreLenNL array/slice elements length > MoreLenNL, will wrap new line // MoreLenNL int // CallerSkip skip for call runtime.Caller() CallerSkip int // ColorTheme for print result. ColorTheme Theme } ``` ## Git Repo * Gitee: [https://gitee.com/gookit/goutil](https://gitee.com/gookit/goutil) * Github: [https://github.com/gookit/goutil](https://github.com/gookit/goutil) * GoDoc: [https://pkg.go.dev/github.com/gookit/goutil/dump](https://pkg.go.dev/github.com/gookit/goutil/dump)

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1654 次点击  ∙  2 赞  
加入收藏 微博
2 回复  |  直到 2022-03-07 15:02:14
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传