golang跨平台终端颜色库无需修改Print方法的插件库ctc的使用

golang跨平台终端颜色库无需修改Print方法的插件库ctc的使用

ctc是一个非侵入式的跨平台终端颜色库,它不需要修改Print方法就能实现终端文本的颜色输出。

支持平台

  • 控制台
    • Unix-like系统 (Mac & Linux)
    • Windows

使用示例

下面是一个完整的示例代码,展示如何使用ctc库来输出带颜色的文本:

package main

import (
	"fmt"

	"github.com/wzshiming/ctc"
)

func main() {
	// 非侵入式使用
	// 设置红色背景和蓝色前景色,输出"Hello world",最后重置颜色
	fmt.Println(ctc.BackgroundRed|ctc.ForegroundBlue, "Hello world", ctc.Reset)
	
	// 更多颜色组合示例
	fmt.Println(ctc.ForegroundGreen, "绿色文本", ctc.Reset)
	fmt.Println(ctc.BackgroundYellow|ctc.ForegroundMagenta, "洋红色文本黄色背景", ctc.Reset)
	fmt.Println(ctc.Underline|ctc.ForegroundCyan, "带下划线的青色文本", ctc.Reset)
}

SGR (Select Graphic Rendition) 参数

ctc库支持以下SGR参数来控制文本样式:

描述 行为
0 默认 将所有属性重置为修改前的默认状态
4 下划线 添加下划线
7 反色 交换前景色和背景色
30~37 前景色 对前景应用非粗体/明亮颜色
40~47 背景色 对背景应用非粗体/明亮颜色
90~97 明亮前景色 对前景应用粗体/明亮颜色
100~107 明亮背景色 对背景应用粗体/明亮颜色

更多示例

package main

import (
	"fmt"
	"time"

	"github.com/wzshiming/ctc"
)

func main() {
	// 进度条示例
	for i := 0; i <= 100; i += 10 {
		fmt.Printf("\r%s进度: %d%%", ctc.ForegroundGreen, i)
		time.Sleep(200 * time.Millisecond)
	}
	fmt.Println(ctc.Reset, "\n完成!")

	// 错误和警告消息
	fmt.Println(ctc.ForegroundRed, "错误: 文件未找到", ctc.Reset)
	fmt.Println(ctc.ForegroundYellow, "警告: 磁盘空间不足", ctc.Reset)
	
	// 高亮显示
	fmt.Println("正常文本", ctc.BackgroundWhite|ctc.ForegroundBlack, "高亮文本", ctc.Reset, "恢复正常")
}

注意事项

  1. 使用ctc时,记得在颜色文本后添加ctc.Reset来恢复默认颜色
  2. 可以组合多个颜色属性使用,如ctc.BackgroundRed|ctc.ForegroundBlue
  3. 该库支持跨平台,在Windows和Unix-like系统上都能正常工作

ctc库采用MIT许可证,是一个简单易用的终端颜色解决方案,特别适合那些不想修改现有打印逻辑的项目。


更多关于golang跨平台终端颜色库无需修改Print方法的插件库ctc的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang跨平台终端颜色库无需修改Print方法的插件库ctc的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Golang 跨平台终端颜色库 ctc 使用指南

ctc 是一个简单易用的跨平台终端颜色库,它不需要修改原有的 Print 方法,可以方便地为终端输出添加颜色。

安装 ctc

go get github.com/wzshiming/ctc

基本使用

ctc 提供了简单直观的 API 来为文本添加颜色:

package main

import (
	"fmt"
	"github.com/wzshiming/ctc"
)

func main() {
	// 直接使用颜色常量
	fmt.Println(ctc.ForegroundGreen, "绿色文字", ctc.Reset)
	
	// 使用颜色包装函数
	green := ctc.ForegroundGreen.String()
	reset := ctc.Reset.String()
	fmt.Println(green + "这也是绿色文字" + reset)
	
	// 混合使用多种颜色
	fmt.Println(ctc.ForegroundRed, ctc.BackgroundYellow, "红字黄底", ctc.Reset)
}

主要功能特性

  1. 无需修改 Print 方法:ctc 通过插入 ANSI 颜色代码来改变颜色,不需要改变原有的打印逻辑
  2. 跨平台支持:自动检测平台并适配颜色输出
  3. 丰富的颜色选项
    • 前景色:Black, Red, Green, Yellow, Blue, Magenta, Cyan, White
    • 背景色:BackgroundBlack, BackgroundRed 等
    • 样式:Bold, Underline, Reverse 等

高级用法

1. 创建颜色组合

func main() {
	// 组合多种样式
	warning := ctc.ForegroundRed.String() + ctc.Bold.String()
	info := ctc.ForegroundCyan.String()
	reset := ctc.Reset.String()
	
	fmt.Println(warning + "警告信息!" + reset)
	fmt.Println(info + "普通信息" + reset)
}

2. 使用颜色函数简化代码

func colorPrint(color ctc.Color, msg string) {
	fmt.Println(color.String() + msg + ctc.Reset.String())
}

func main() {
	colorPrint(ctc.ForegroundBlue, "蓝色消息")
	colorPrint(ctc.ForegroundMagenta, "紫色消息")
}

3. 条件性颜色输出

func printStatus(status string) {
	var color ctc.Color
	switch status {
	case "success":
		color = ctc.ForegroundGreen
	case "error":
		color = ctc.ForegroundRed
	case "warning":
		color = ctc.ForegroundYellow
	default:
		color = ctc.ForegroundWhite
	}
	fmt.Println(color, status, ctc.Reset)
}

func main() {
	printStatus("success")
	printStatus("error")
	printStatus("warning")
	printStatus("unknown")
}

注意事项

  1. 使用颜色后记得添加 ctc.Reset 重置颜色,否则后续输出会保持当前颜色
  2. 在非终端环境下(如重定向到文件),ctc 会自动禁用颜色输出
  3. 对于复杂的彩色输出,可以考虑将颜色逻辑封装成辅助函数

ctc 是一个轻量级解决方案,适合需要简单添加终端颜色而不想改变现有打印逻辑的项目。对于更复杂的需求,可以考虑其他功能更丰富的库如 colorchalk

回到顶部