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, "恢复正常")
}
注意事项
- 使用ctc时,记得在颜色文本后添加
ctc.Reset
来恢复默认颜色 - 可以组合多个颜色属性使用,如
ctc.BackgroundRed|ctc.ForegroundBlue
- 该库支持跨平台,在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)
}
主要功能特性
- 无需修改 Print 方法:ctc 通过插入 ANSI 颜色代码来改变颜色,不需要改变原有的打印逻辑
- 跨平台支持:自动检测平台并适配颜色输出
- 丰富的颜色选项:
- 前景色: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")
}
注意事项
- 使用颜色后记得添加
ctc.Reset
重置颜色,否则后续输出会保持当前颜色 - 在非终端环境下(如重定向到文件),ctc 会自动禁用颜色输出
- 对于复杂的彩色输出,可以考虑将颜色逻辑封装成辅助函数
ctc 是一个轻量级解决方案,适合需要简单添加终端颜色而不想改变现有打印逻辑的项目。对于更复杂的需求,可以考虑其他功能更丰富的库如 color 或 chalk。