golang 每日一庫之 fatih-color
fatih/color
是一個流行的 Go 語言庫,用於在終端中輸出彩色文本和樣式化的內容。由開發者 Fatih Arslan 創建,它簡化了 ANSI 轉義碼的使用,使開發者能夠輕鬆爲 CLI 工具、日誌系統等添加顏色和樣式。
特點
- 豐富的顏色和樣式支持
-
顏色
:支持 16 種基礎前景色(如紅色、綠色)和背景色。
-
樣式
:支持加粗(bold)、斜體(italic)、下劃線(underline)、反色(inverse)等。
-
自定義顏色
:支持 256 色(16 位)和 RGB 真彩色(需終端支持)。
- 跨平臺兼容
- 自動檢測系統環境(如 Windows),並在不支持 ANSI 時禁用顏色輸出。
- 鏈式調用與組合
- 通過鏈式方法(如
color.New(color.FgRed).Add(color.Bold)
)組合多種樣式。
- 高性能
- 避免重複初始化,通過預定義顏色對象複用樣式。
安裝
go get github.com/fatih/color
基礎使用
1. 直接使用預定義顏色函數
package main
import "github.com/fatih/color"
func main() {
color.Red("這是紅色文本")
color.Blue("這是藍色文本")
color.New(color.FgWhite, color.BgGreen).Println("白字綠底")
color.Green("%s 和 %s", "綠色文本", "更多綠色")
}
2. 自定義顏色對象
// 創建自定義樣式
customColor := color.New(color.FgCyan, color.Bold, color.Underline)
customColor.Println("青色、加粗、下劃線文本")
3. 禁用 / 啓用顏色
color.NoColor = true // 全局禁用顏色
color.NoColor = false // 啓用顏色(默認)
進階
1. 組合多種樣式
// 鏈式調用組合樣式
errorStyle := color.New(color.FgRed, color.Bold).Add(color.BgWhite)
errorStyle.Println("錯誤提示:紅色加粗白底")
2. 使用 256 色或 RGB
// 256 色
c := color.New(color.Color(196)) // 鮮豔的紅色
c.Println("256 色模式")
// RGB 真彩色(需終端支持)
rgbColor := color.NewRGB(255, 0, 128) // R=255, G=0, B=128
rgbColor.Println("RGB 真彩色文本")
3. 格式化輸出
// 類似 fmt.Printf
color.Yellow("用戶 %s 登錄失敗,嘗試次數:%d", "Alice", 5)
// 返回字符串(不直接輸出)
msg := color.HiGreenString("成功!")
fmt.Println(msg)
跨平臺
-
Windows
:庫內部使用
golang.org/x/sys/windows
自動啓用 ANSI 支持(Win10+)。 -
其他系統
:默認啓用 ANSI 轉義碼,老舊終端可能不支持部分樣式。
應用場景
-
CLI 工具
:高亮關鍵信息(如成功 / 錯誤)。
-
日誌系統
:區分不同級別的日誌(ERROR 紅色、INFO 綠色)。
-
測試框架
:彩色化測試結果(通過 / 失敗)。
-
交互式終端
:增強用戶輸入提示。
示例代碼
package main
import (
"github.com/fatih/color"
)
func main() {
// 錯誤信息(紅色加粗)
errorColor := color.New(color.FgRed, color.Bold)
errorColor.Println("錯誤:文件未找到")
// 警告信息(黃色下劃線)
color.Yellow("警告:磁盤空間不足")
// 成功信息(綠色背景)
successColor := color.New(color.FgBlack, color.BgGreen)
successColor.Printf("狀態:%s\n", "完成")
// 自定義 RGB 顏色
rgb := color.NewRGB(0, 255, 255) // 青色
rgb.Println("RGB 彩色文本")
}
xu 要注意
-
部分老舊終端可能不支持所有樣式(如 RGB)。
-
在非交互式環境(如重定向到文件)中應自動禁用顏色。
通過 fatih/color
,可以輕鬆爲終端應用增加可視化效果,提升用戶體驗。
標題:golang 每日一庫之 fatih/color
作者:mooncakeee
地址:http://blog.dd95828.com/articles/2025/03/13/1741835792048.html
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/5Nz7BqtFy90CR5vt5BgQig