前言
在 Go 开发中,遇到多层嵌套的结构体、map、slice 时,fmt.Println 的输出往往一团乱,很难快速看清结构。
下面介绍两个轻量好用的打印包,用简单代码示例帮你快速上手。
1. k0kubun/pp ------ 彩色美观打印
安装:
bash
go get github.com/k0kubun/pp/v3
完整示例代码:
go
package main
import (
"github.com/k0kubun/pp/v3"
)
type Profile struct {
City string
Job string
}
type User struct {
Name string
Age int
Hobbies []string
Profile Profile
}
func main() {
u := User{
Name: "张三",
Age: 28,
Hobbies: []string{"游泳", "读书", "旅行"},
Profile: Profile{
City: "北京",
Job: "程序员",
},
}
pp.Println(u)
}
输出效果(终端带颜色显示):
{
Name: "张三",
Age: 28,
Hobbies: ["游泳", "读书", "旅行"],
Profile: {
City: "北京",
Job: "程序员"
}
}
个性化配置示例:
go
// 全局配置
pp.Default.SetColoringEnabled(false) // 关闭颜色
pp.Default.SetExportedOnly(true) // 只显示导出字段
pp.Default.SetOmitEmpty(true) // 省略空值
// 或者创建独立实例
mypp := pp.New()
mypp.SetColoringEnabled(false)
mypp.Println(u)
2. gookit/goutil/dump ------ 功能丰富调试打印
安装:
bash
go get github.com/gookit/goutil/dump
完整示例代码:
go
package main
import "github.com/gookit/goutil/dump"
type Profile struct {
City string
Job string
}
type User struct {
Name string
Age int
Hobbies []string
Profile Profile
}
func main() {
u := User{
Name: "李四",
Age: 30,
Hobbies: []string{"跑步", "游戏", "健身"},
Profile: Profile{
City: "上海",
Job: "产品经理",
},
}
dump.P(u)
}
输出效果(清晰缩进):
User{
Name: "李四",
Age: 30,
Hobbies: []string{"跑步", "游戏", "健身"},
Profile: Profile{
City: "上海",
Job: "产品经理"
}
}
个性化配置示例:
go
dump.Config(func(opts *dump.Options) {
opts.NoColor = true // 关闭颜色
opts.IndentLen = 4 // 缩进空格数
opts.MaxDepth = 10 // 最大嵌套深度
opts.SkipPrivate = true // 跳过私有字段
opts.SkipNilField = true // 跳过 nil 字段
})
dump.P(u)
总结推荐
- 想简单快速看结构 → 用
dump.P(v) - 想要彩色高亮好看 → 用
pp.Println(v)