golang 每日一庫之 fatih-color

fatih/color 是一個流行的 Go 語言庫,用於在終端中輸出彩色文本和樣式化的內容。由開發者 Fatih Arslan 創建,它簡化了 ANSI 轉義碼的使用,使開發者能夠輕鬆爲 CLI 工具、日誌系統等添加顏色和樣式。

特點

  1. 豐富的顏色和樣式支持
  1. 跨平臺兼容
  1. 鏈式調用與組合
  1. 高性能

安裝

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)

跨平臺

應用場景

  1. CLI 工具

    :高亮關鍵信息(如成功 / 錯誤)。

  2. 日誌系統

    :區分不同級別的日誌(ERROR 紅色、INFO 綠色)。

  3. 測試框架

    :彩色化測試結果(通過 / 失敗)。

  4. 交互式終端

    :增強用戶輸入提示。

示例代碼

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 要注意

  1. 部分老舊終端可能不支持所有樣式(如 RGB)。

  2. 在非交互式環境(如重定向到文件)中應自動禁用顏色。

通過 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