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事件示例

UserStream事件示例

Windows支持

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
彩色输出
结构化显示 基本 优秀
嵌套结构处理 一般 优秀
自定义配置 有限 丰富
性能 较低

使用建议

  1. 开发环境:非常适合在开发调试时使用,能大大提高调试效率
  2. 生产环境:不建议在生产环境中使用,会影响性能
  3. 日志系统:可以与日志系统结合,在开发模式下使用 pp 进行美化输出
  4. 复杂数据结构:处理复杂嵌套结构时特别有用

pp 库通过彩色和结构化的输出,让开发者能够更直观地理解数据结构和程序状态,是 Golang 开发中一个非常实用的调试工具。

回到顶部