golang彩色美化打印输出工具插件库pp的使用
Golang彩色美化打印输出工具插件库pp的使用
pp是一个为Go语言提供的彩色美化打印工具库,可以让你的控制台输出更加美观和易读。
基本使用
只需要调用pp.Print()
即可:
import "github.com/k0kubun/pp/v3"
m := map[string]string{"foo": "bar", "hello": "world"}
pp.Print(m)
API
提供了类似fmt包的函数:
pp.Print() // 打印输出
pp.Println() // 打印输出并换行
pp.Sprint() // 返回格式化字符串
pp.Fprintf() // 格式化输出到指定io.Writer
配置
可以通过pp.Default
进行全局配置:
pp.Default.SetColoringEnabled(false) // 禁用彩色输出
pp.Println() // 无颜色输出
也可以创建独立的实例,不影响默认打印机:
mypp := pp.New()
mypp.SetColoringEnabled(false) // 禁用彩色
mypp.SetExportedOnly(true) // 只输出导出字段
mypp.SetOmitEmpty(true) // 忽略空值
mypp.Println()
自定义颜色
如果需要,你可以更改语法高亮的颜色:
// 创建颜色方案结构体
scheme := pp.ColorScheme{
Integer: pp.Green | pp.Bold, // 整数:绿色加粗
Float: pp.Black | pp.BackgroundWhite | pp.Bold, // 浮点数:黑色文字,白色背景,加粗
String: pp.Yellow, // 字符串:黄色
}
// 注册使用该方案
pp.Default.SetColorScheme(scheme)
可用的颜色标志包括:
// 颜色
Black
Red
Green
Yellow
Blue
Magenta
Cyan
White
// 背景色
BackgroundBlack
BackgroundRed
BackgroundGreen
BackgroundYellow
BackgroundBlue
BackgroundMagenta
BackgroundCyan
BackgroundWhite
// 其他
Bold
// 特殊
NoColor
如果要恢复默认高亮,可以调用pp.ResetColorScheme()
。
示例演示
时间线示例
UserStream事件示例
Windows支持
完整示例
package main
import (
"github.com/k0kubun/pp/v3"
)
func main() {
// 基本使用
data := map[string]interface{}{
"name": "John Doe",
"age": 30,
"active": true,
"hobbies": []string{"reading", "swimming", "coding"},
"address": struct {
city string
country string
}{"New York", "USA"},
}
pp.Println("基本输出:")
pp.Print(data)
// 自定义颜色方案
scheme := pp.ColorScheme{
Integer: pp.Green | pp.Bold,
String: pp.Yellow,
Bool: pp.Cyan | pp.Bold,
StructName: pp.White,
FieldName: pp.Blue,
}
pp.Println("\n自定义颜色输出:")
pp.Default.SetColorScheme(scheme)
pp.Print(data)
// 创建独立实例
mypp := pp.New()
mypp.SetColoringEnabled(false)
mypp.SetExportedOnly(true)
pp.Println("\n独立实例输出(无颜色):")
mypp.Print(data)
}
许可证
MIT License
更多关于golang彩色美化打印输出工具插件库pp的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复
更多关于golang彩色美化打印输出工具插件库pp的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Golang 彩色美化打印输出工具库 pp 的使用
pp
是一个简单易用的 Golang 彩色美化打印库,它可以帮助开发者以更直观、更美观的方式打印调试信息,特别适合在开发过程中使用。
安装 pp
使用 go get 命令安装 pp:
go get github.com/k0kubun/pp
基本使用
1. 简单打印
package main
import (
"github.com/k0kubun/pp"
)
func main() {
pp.Println("Hello, World!")
pp.Println(123, 456, 789)
pp.Println([]string{"apple", "banana", "cherry"})
data := map[string]interface{}{
"name": "John",
"age": 30,
"hobbies": []string{"reading", "swimming"},
}
pp.Println(data)
}
2. 格式化打印
package main
import (
"github.com/k0kubun/pp"
)
func main() {
// 类似于 fmt.Printf
pp.Printf("Name: %s, Age: %d\n", "Alice", 25)
// 类似于 fmt.Sprintf
str := pp.Sprintf("Data: %v", []int{1, 2, 3})
println(str)
}
3. 彩色输出配置
package main
import (
"github.com/k0kubun/pp"
)
func main() {
// 禁用彩色输出
pp.ColoringEnabled = false
pp.Println("This will be monochrome")
// 重新启用彩色输出
pp.ColoringEnabled = true
// 自定义颜色方案
pp.SetColorScheme(pp.ColorScheme{
Bool: pp.Yellow,
Integer: pp.Blue,
Float: pp.Blue,
String: pp.Green,
StructName: pp.White,
FieldName: pp.White,
Pointer: pp.Magenta,
Nil: pp.Cyan,
Time: pp.Blue,
})
pp.Println("Custom color scheme applied")
}
4. 结构体打印
package main
import (
"github.com/k0kubun/pp"
"time"
)
type Person struct {
Name string
Age int
Hobbies []string
DOB time.Time
}
func main() {
p := Person{
Name: "Bob",
Age: 42,
Hobbies: []string{"fishing", "hiking"},
DOB: time.Date(1980, 5, 15, 0, 0, 0, 0, time.UTC),
}
pp.Println(p)
// 紧凑模式
pp.Println(pp.Sprint(p))
}
5. 高级特性
package main
import (
"github.com/k0kubun/pp"
)
func main() {
// 打印带行号的调试信息
pp.Println(pp.LineInfo(), "Debug message")
// 打印调用栈
pp.Println(pp.Callers())
// 自定义前缀
pp.Println(pp.Header("ERROR"), "Something went wrong")
// 深度限制
deep := map[string]interface{}{}
current := deep
for i := 0; i < 10; i++ {
current["nested"] = map[string]interface{}{}
current = current["nested"].(map[string]interface{})
}
pp.Println(deep) // 默认会截断深层嵌套
// 增加深度限制
pp.Default.MaxDepth = 15
pp.Println(deep)
}
与标准库 fmt 的比较
特性 | fmt | pp |
---|---|---|
彩色输出 | ❌ | ✅ |
结构化显示 | 基本 | 优秀 |
嵌套结构处理 | 一般 | 优秀 |
自定义配置 | 有限 | 丰富 |
性能 | 高 | 较低 |
使用建议
- 开发环境:非常适合在开发调试时使用,能大大提高调试效率
- 生产环境:不建议在生产环境中使用,会影响性能
- 日志系统:可以与日志系统结合,在开发模式下使用 pp 进行美化输出
- 复杂数据结构:处理复杂嵌套结构时特别有用
pp 库通过彩色和结构化的输出,让开发者能够更直观地理解数据结构和程序状态,是 Golang 开发中一个非常实用的调试工具。