golang终端彩色文本输出插件库go-colortext的使用

golang终端彩色文本输出插件库go-colortext的使用

go-colortext是一个用于在控制台改变文本和背景颜色的包,支持Windows和其他操作系统。

在Windows系统下,它使用控制台API实现彩色输出;在其他系统下,则使用ANSI转义码实现彩色文本输出。

安装方法

go get github.com/daviddengcn/go-colortext

使用示例

下面是一个完整的示例demo,展示如何使用go-colortext库输出彩色文本:

package main

import (
	"fmt"
	"github.com/daviddengcn/go-colortext"
)

func main() {
	// 设置前景色为绿色,不亮色
	ct.Foreground(ct.Green, false)
	fmt.Println("这是一行绿色文字")
	
	// 改变颜色:红色亮色前景,白色背景
	ct.ChangeColor(ct.Red, true, ct.White, false)
	fmt.Println("红色亮色前景,白色背景的文字")
	
	// 重置颜色
	ct.ResetColor()
	fmt.Println("恢复默认颜色")
	
	// 更多颜色示例
	colors := []ct.Color{
		ct.Black,
		ct.Red,
		ct.Green,
		ct.Yellow,
		ct.Blue,
		ct.Magenta,
		ct.Cyan,
		ct.White,
	}
	
	for _, c := range colors {
		// 前景色
		ct.Foreground(c, false)
		fmt.Printf("前景色: %v\n", c)
		
		// 亮色前景
		ct.Foreground(c, true)
		fmt.Printf("亮色前景: %v\n", c)
		
		// 背景色
		ct.Background(c, false)
		fmt.Printf("背景色: %v\n", c)
		
		// 重置颜色
		ct.ResetColor()
	}
}

主要函数说明

  1. Foreground(color Color, bright bool) - 设置前景色

    • color: 颜色值(如ct.Red, ct.Green等)
    • bright: 是否使用亮色
  2. Background(color Color, bright bool) - 设置背景色

  3. ChangeColor(fore Color, foreBright bool, back Color, backBright bool) - 同时改变前景和背景色

  4. ResetColor() - 重置为默认颜色

可用颜色常量

const (
	None Color = iota
	Black
	Red
	Green
	Yellow
	Blue
	Magenta
	Cyan
	White
)

许可证

go-colortext使用BSD/MIT许可证。


更多关于golang终端彩色文本输出插件库go-colortext的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang终端彩色文本输出插件库go-colortext的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


Go-Colortext 终端彩色文本输出库使用指南

go-colortext 是一个简单易用的 Golang 库,用于在终端输出彩色文本。下面我将详细介绍它的使用方法。

安装

go get github.com/daviddengcn/go-colortext

基本用法

package main

import (
	ct "github.com/daviddengcn/go-colortext"
)

func main() {
	// 改变后续文本颜色
	ct.ChangeColor(ct.Red, true, ct.None, false)
	println("红色文本")
	
	// 重置颜色
	ct.ResetColor()
	println("默认颜色")
	
	// 直接打印彩色文本
	ct.Println(ct.Green, true, "绿色加粗文本")
	
	// 使用颜色常量
	ct.Printf(ct.Yellow, false, ct.Blue, "黄色文本在蓝色背景上\n")
}

颜色常量

go-colortext 提供了以下颜色常量:

const (
	None = iota
	Black
	Red
	Green
	Yellow
	Blue
	Magenta
	Cyan
	White
)

主要函数

1. ChangeColor

func ChangeColor(color Color, bright bool, bgColor Color, bgBright bool)
  • color: 文本颜色
  • bright: 是否高亮/加粗
  • bgColor: 背景颜色
  • bgBright: 背景是否高亮

示例:

ct.ChangeColor(ct.Magenta, true, ct.Black, false)
fmt.Println("紫色加粗文本,黑色背景")
ct.ResetColor()

2. ResetColor

重置为终端默认颜色。

3. Print/Println/Printf

直接打印彩色文本的便捷方法:

func Print(color Color, bright bool, v ...interface{})
func Println(color Color, bright bool, v ...interface{}) 
func Printf(color Color, bright bool, format string, a ...interface{})

示例:

ct.Println(ct.Cyan, false, "青色普通文本")
ct.Printf(ct.White, true, ct.Red, "白色加粗文本在红色背景上: %d\n", 42)

完整示例

package main

import (
	"fmt"
	ct "github.com/daviddengcn/go-colortext"
)

func main() {
	// 简单颜色示例
	colors := []ct.Color{ct.Red, ct.Green, ct.Yellow, ct.Blue, ct.Magenta, ct.Cyan}
	for i, c := range colors {
		ct.Printf(c, true, "颜色 %d\n", i+1)
	}
	ct.ResetColor()

	// 表格样式示例
	headers := []string{"ID", "Name", "Status"}
	data := [][]string{
		{"1", "Alice", "Active"},
		{"2", "Bob", "Inactive"},
		{"3", "Charlie", "Pending"},
	}

	// 打印表头
	ct.ChangeColor(ct.White, true, ct.Blue, false)
	for _, h := range headers {
		fmt.Printf("| %-10s ", h)
	}
	fmt.Println("|")
	ct.ResetColor()

	// 打印数据行
	for i, row := range data {
		color := ct.Green
		if i%2 == 0 {
			color = ct.Cyan
		}
		ct.ChangeColor(color, false, ct.None, false)
		for _, cell := range row {
			fmt.Printf("| %-10s ", cell)
		}
		fmt.Println("|")
	}
	ct.ResetColor()

	// 错误消息示例
	ct.Println(ct.Red, true, "错误: 文件未找到!")
	
	// 警告消息示例
	ct.Println(ct.Yellow, true, "警告: 磁盘空间不足")
	
	// 成功消息示例
	ct.Println(ct.Green, true, "成功: 操作已完成")
}

注意事项

  1. 不是所有终端都支持彩色输出,特别是在Windows上可能需要额外配置
  2. 使用后最好调用 ResetColor() 恢复默认颜色,以免影响后续输出
  3. 颜色在重定向到文件时通常不会显示
  4. 对于更复杂的终端UI,可以考虑更强大的库如 termbox-gotcell

go-colortext 是一个轻量级的解决方案,适合简单的彩色文本输出需求。它的API简单直接,是快速为命令行程序添加颜色的好选择。

回到顶部