欢迎加入开源鸿蒙PC社区: https://harmonypc.csdn.net/
欢迎在PC社区平台申请新建项目https://atomgit.com/OpenHarmonyPCDeveloper
AtomGit 仓库地址:https://atomgit.com/OpenHarmonyPCDeveloper/ohos_go_cgo

本文讲解鸿蒙PC基于musl库、应用沙箱与二进制强制签名机制,不原生支持Go语言,通用Linux编译产物无法直接运行。需借助社区Harmonybrew包管理器搭建开发环境:纯Go开发安装go与ohos-sdk,依托SDK实现编译自动签名;CGO跨语言开发需额外安装llvm-gcc-compat补齐cc 编译命令,编译时手动开启CGO参数。搭配CodeArts IDE可完成全流程开发,同时需提前处理软件冲突、使用原生终端规避环境报错。

可以参考OpenHarmony 鸿蒙 PC + CodeArts IDE 实现 Go开发完整开发环境搭建指南


一、gookit/color 是什么

Go 终端控制台彩色输出库,给命令行文字添加前景色、背景色、加粗、下划线、闪烁、高亮等样式,Windows / Mac / Linux 全平台兼容,自动识别终端支持度,无需额外配置。

核心作用
  1. 日志分级染色:红=错误、黄=警告、绿=成功、蓝=信息、灰=调试
  2. 命令行工具美化输出,区分不同类型文本
  3. 支持链式调用、模板渲染、自定义颜色、256真彩色
  4. 一键关闭颜色输出(日志文件导出时自动屏蔽)
  5. 极简API,开箱即用,无复杂依赖
1. 安装依赖
# 配置国内代理加速
go env -w GOPROXY=https://goproxy.cn,direct
# 初始化模块(已有go.mod跳过)
go mod init color-demo
# 拉取依赖
go get github.com/gookit/color

请添加图片描述

2. 完整无报错 main.go
package main

import (
	"fmt"
	"github.com/gookit/color"
)

func main() {
	// 1. 基础单色前景输出
	fmt.Println("===== 基础前景色文字 =====")
	color.Red.Print("红色文字:错误提示\n")
	color.Green.Print("绿色文字:操作成功\n")
	color.Yellow.Print("黄色文字:警告提醒\n")
	color.Blue.Print("蓝色文字:普通信息\n")
	color.Cyan.Print("青色文字:备注内容\n")
	color.Gray.Print("灰色文字:调试日志\n")
	color.Magenta.Print("紫色文字:标记内容\n")

	// 2. 带背景色输出
	fmt.Println("\n===== 带背景颜色 =====")
	color.BgRed.Print("红底白字\n")
	color.BgGreen.Print("绿底白字\n")
	color.BgYellow.Print("黄底黑字\n")
	color.BgBlue.Print("蓝底白字\n")

	// 3. 加粗组合样式
	fmt.Println("\n===== 加粗样式文字 =====")
	boldRed := color.New(color.FgRed, color.Bold)
	boldRed.Print("加粗红色文字\n")

	boldYellow := color.New(color.FgYellow, color.Bold)
	boldYellow.Print("加粗黄色文字\n")

	// 4. 格式化 Printf
	fmt.Println("\n===== 格式化彩色输出 =====")
	color.Green.Printf("用户 %s 登录成功,耗时 %d ms\n", "zhangsan", 28)
	color.Red.Printf("接口请求失败,错误码:%d\n", 500)

	// 5. 同一行拼接多种颜色
	fmt.Println("\n===== 一行混合多种颜色 =====")
	strErr := color.New(color.FgRed).Sprint("【错误】") + " 数据库连接超时:" + color.New(color.FgBlue).Sprint("127.0.0.1:3306")
	fmt.Println(strErr)

	strOk := color.New(color.FgGreen).Sprint("【成功】") + " 共处理 " + color.New(color.FgYellow).Sprint("128") + " 条数据"
	fmt.Println(strOk)

	// 6. 内置日志快捷打印(业务最常用)
	fmt.Println("\n===== 分级日志彩色输出 =====")
	color.Error.Println("Error: 系统内部异常")
	color.Warn.Println("Warn: 磁盘剩余空间不足")
	color.Info.Println("Info: 定时任务执行完成")
	color.Success.Println("Success: 文件导出完毕")
	color.Debug.Println("Debug: SQL 查询语句打印")

	// 7. 自定义 RGB 前景彩色文字
	fmt.Println("\n===== 自定义RGB彩色文字 =====")
	color.RGB(255, 100, 50).Println("自定义橘红色文字内容")
}
3. 运行命令
go run main.go

终端会直接输出带各种彩色、加粗、背景的文字,Windows cmd / powershell 自动兼容,无需额外配置。

gookit/color 是 Go 语言轻量终端色彩库,专门给控制台输出文字上色、加粗、背景色,常用于日志分级美化、CLI命令行工具、脚本输出区分信息类型,完美兼容 Windows / Linux / Mac 终端,自动识别终端是否支持ANSI色彩。


一、包介绍

github.com/gookit/color 是Go命令行彩色输出工具,基于ANSI颜色码实现控制台文字上色,常用于脚本、CLI工具、后台定时任务日志区分级别,让日志一眼区分成功/错误/警告。
安装依赖:

go get github.com/gookit/color

二、头部导入

package main

import (
	"fmt"
	"github.com/gookit/color"
)
  • fmt:标准打印,用于拼接多色字符串后统一输出
  • color:提供所有色彩、样式、日志分级能力

三、分模块逐段解析

1. 基础前景单色文字

fmt.Println("===== 基础前景色文字 =====")
color.Red.Print("红色文字:错误提示\n")
color.Green.Print("绿色文字:操作成功\n")
color.Yellow.Print("黄色文字:警告提醒\n")
color.Blue.Print("蓝色文字:普通信息\n")
color.Cyan.Print("青色文字:备注内容\n")
color.Gray.Print("灰色文字:调试日志\n")
color.Magenta.Print("紫色文字:标记内容\n")

内置基础前景色常量,直接调用打印:

  • Red 红色:统一用于报错、异常信息
  • Green 绿色:成功、完成类提示
  • Yellow 黄色:警告、风险提示
  • Blue 蓝色:普通信息、IP、ID、链接
  • Cyan 青色:附加备注、说明文本
  • Gray 灰色:调试日志、次要打印内容
  • Magenta 紫色:重点标记、高亮关键词

打印方法区分:

  • .Print():无自动换行,需要手动加\n
  • .Println():自带换行

2. 背景色文字

fmt.Println("\n===== 带背景颜色 =====")
color.BgRed.Print("红底白字\n")
color.BgGreen.Print("绿底白字\n")
color.BgYellow.Print("黄底黑字\n")
color.BgBlue.Print("蓝底白字\n")

Bg+颜色 代表背景填充色,库自动适配文字黑白保证可读性:

  • BgRed:红色背景,白色字体
  • BgGreen:绿色背景,白色字体
  • BgYellow:黄色背景,黑色字体
    适合需要强高亮的关键提示文本。

3. 组合样式:前景色 + 加粗

fmt.Println("\n===== 加粗样式文字 =====")
boldRed := color.New(color.FgRed, color.Bold)
boldRed.Print("加粗红色文字\n")

boldYellow := color.New(color.FgYellow, color.Bold)
boldYellow.Print("加粗黄色文字\n")

color.New(样式1,样式2,...) 支持叠加多种显示样式:

  • color.FgRed:红色前景
  • color.Bold:文字加粗
    生成的样式对象可重复复用打印,适合全局统一的错误标题、警告标题。

4. 彩色格式化打印 Printf

fmt.Println("\n===== 格式化彩色输出 =====")
color.Green.Printf("用户 %s 登录成功,耗时 %d ms\n", "zhangsan", 28)
color.Red.Printf("接口请求失败,错误码:%d\n", 500)

所有色彩对象都支持 Printf,用法和标准 fmt.Printf 完全一致,可直接在彩色文本中拼接变量,无需手动字符串拼接。

5. 同一行混合多种颜色(Sprint 生成彩色字符串)

fmt.Println("\n===== 一行混合多种颜色 =====")
strErr := color.New(color.FgRed).Sprint("【错误】") + " 数据库连接超时:" + color.New(color.FgBlue).Sprint("127.0.0.1:3306")
fmt.Println(strErr)

strOk := color.New(color.FgGreen).Sprint("【成功】") + " 共处理 " + color.New(color.FgYellow).Sprint("128") + " 条数据"
fmt.Println(strOk)

核心方法 .Sprint()
不会直接打印,而是生成携带ANSI颜色标记的字符串,可和普通字符串自由拼接,最后用fmt.Println一次性输出,实现一行文字多种色彩。
适用场景:日志行内区分标签、数值、地址。

6. 业务分级日志快捷方法(开发最常用)

fmt.Println("\n===== 分级日志彩色输出 =====")
color.Error.Println("Error: 系统内部异常")
color.Warn.Println("Warn: 磁盘剩余空间不足")
color.Info.Println("Info: 定时任务执行完成")
color.Success.Println("Success: 文件导出完毕")
color.Debug.Println("Debug: SQL 查询语句打印")

库内置封装好的日志分级,自带固定配色,开箱即用:

  • Error:红色,程序异常、接口失败
  • Warn:黄色,资源不足、风险预警
  • Info:蓝色,正常流程信息
  • Success:绿色,任务执行成功
  • Debug:灰色,调试SQL、详细参数打印

7. 自定义RGB彩色文字

fmt.Println("\n===== 自定义RGB彩色文字 =====")
color.RGB(255, 100, 50).Println("自定义橘红色文字内容")

color.RGB(r,g,b) 自定义任意前景色,RGB取值范围0~255;
拓展:color.BgRGB(r,g,b) 可自定义背景色,适合CLI工具自定义品牌色。

四、常用API汇总

  1. 直接打印:color.Red.Print/Println/Printf
  2. 生成彩色字符串用于拼接:.Sprint()
  3. 复合样式复用:color.New(样式列表)
  4. 背景色系列:color.BgRed/BgGreen
  5. 分级日志快捷打印:color.Error/Warn/Info/Success/Debug
  6. 自定义颜色:color.RGB(r,g,b)

五、使用场景与注意事项

适用场景

  1. Golang CLI命令行工具美化输出
  2. 定时脚本、后台任务彩色日志
  3. 单元测试、压测脚本结果打印
  4. 服务启动打印Banner、状态提示

生产小提示

  1. 日志持久化到文件时,ANSI色彩控制码会混入文本;建议增加环境开关,生产环境关闭彩色输出。
  2. 重复使用的加粗标题、固定提示样式,提前用color.New创建对象复用,减少重复创建开销。
  3. Windows旧版cmd原生支持ANSI色彩,无颜色时会自动降级为普通黑白文本,不会出现乱码。

一、安装依赖

go get github.com/gookit/color

导入包:

import (
	"fmt"
	"github.com/gookit/color"
)

核心概念前置

  1. 前景色(Fg):文字本身颜色
  2. 背景色(Bg):文字后方底色
  3. 样式修饰:Bold加粗、Underline下划线、Italic斜体等
  4. 两种使用模式:
    • 快捷静态对象:color.Red/color.Success 开箱即用
    • 自定义样式:color.New(颜色, 修饰符) 自由组合
  5. 输出方法区分:
    • .Print():不换行打印
    • .Println():打印并自动换行
    • .Printf():格式化彩色输出,支持占位符
    • .Sprint():返回彩色字符串,不直接打印,用于拼接混合色彩

分段逐行解析代码

1. 基础单色前景文字(最常用)

fmt.Println("===== 基础前景色文字 =====")
color.Red.Print("红色文字:错误提示\n")
color.Green.Print("绿色文字:操作成功\n")
color.Yellow.Print("黄色文字:警告提醒\n")
color.Blue.Print("蓝色文字:普通信息\n")
color.Cyan.Print("青色文字:备注内容\n")
color.Gray.Print("灰色文字:调试日志\n")
color.Magenta.Print("紫色文字:标记内容\n")

内置基础前景色静态对象,直接调用打印:

颜色对象 业务场景
Red 红色 错误、失败、异常
Green 绿色 成功、完成、正常
Yellow 黄色 警告、提醒、注意
Blue 蓝色 普通信息、地址、ID
Cyan 青色 备注、附加说明
Gray 灰色 调试日志、次要信息
Magenta 紫色 标记、重点关键词

.Print("xxx\n") 打印彩色文本,内部必须手动加换行符 \n;等价 .Println 可省去换行。

2. 带背景色输出

fmt.Println("\n===== 带背景颜色 =====")
color.BgRed.Print("红底白字\n")
color.BgGreen.Print("绿底白字\n")
color.BgYellow.Print("黄底黑字\n")
color.BgBlue.Print("蓝底白字\n")

BgXXX 代表背景色,文字会自动适配对比色(白底/黑字)保证可读性:

  • BgRed:红色背景,白色文字
  • BgYellow:黄色背景,黑色文字
    适合高亮提示、告警弹窗式日志。

3. 自定义组合样式(颜色+加粗)

fmt.Println("\n===== 加粗样式文字 =====")
boldRed := color.New(color.FgRed, color.Bold)
boldRed.Print("加粗红色文字\n")

boldYellow := color.New(color.FgYellow, color.Bold)
boldYellow.Print("加粗黄色文字\n")

color.New() 自定义样式核心语法

color.New(前景色, 修饰符, 背景色...)
  • color.FgRed:常量,代表红色前景
  • color.Bold:修饰常量,加粗效果
    支持多修饰叠加:加粗+下划线 color.New(color.FgBlue, color.Bold, color.Underline)

返回一个样式对象,可重复复用(如全局定义错误加粗红色,多处调用)。

4. 格式化彩色 Printf

fmt.Println("\n===== 格式化彩色输出 =====")
color.Green.Printf("用户 %s 登录成功,耗时 %d ms\n", "zhangsan", 28)
color.Red.Printf("接口请求失败,错误码:%d\n", 500)

和标准库 fmt.Printf 用法完全一致,支持 %s %d %f 占位符,整行全部使用对应色彩。
业务场景:打印带变量的彩色日志,不用手动拼接字符串。

5. 同一行混合多种颜色(.Sprint() 核心用法)

fmt.Println("\n===== 一行混合多种颜色 =====")
strErr := color.New(color.FgRed).Sprint("【错误】") + " 数据库连接超时:" + color.New(color.FgBlue).Sprint("127.0.0.1:3306")
fmt.Println(strErr)

strOk := color.New(color.FgGreen).Sprint("【成功】") + " 共处理 " + color.New(color.FgYellow).Sprint("128") + " 条数据"
fmt.Println(strOk)

.Sprint() 关键函数

不会直接打印,而是返回带ANSI色彩标记的字符串,可以和普通字符串拼接,实现一行内多种不同颜色文字
效果示例:
【错误】 红色 + 普通黑色文字 + 127.0.0.1:3306 蓝色
日志、命令行提示行高频使用,区分关键词。

6. 内置分级日志快捷打印(项目开发最实用)

fmt.Println("\n===== 分级日志彩色输出 =====")
color.Error.Println("Error: 系统内部异常")
color.Warn.Println("Warn: 磁盘剩余空间不足")
color.Info.Println("Info: 定时任务执行完成")
color.Success.Println("Success: 文件导出完毕")
color.Debug.Println("Debug: SQL 查询语句打印")

库内置封装好的日志分级样式,不用自己New组合颜色,开箱即用:

  • color.Error:红文字,用于程序异常
  • color.Warn:黄文字,用于风险警告
  • color.Info:蓝文字,普通业务日志
  • color.Success:绿文字,成功操作
  • color.Debug:灰文字,调试打印

.Println() 自带自动换行,简化代码,后端服务日志打印首选。

7. 自定义 RGB 任意彩色

fmt.Println("\n===== 自定义RGB彩色文字 =====")
color.RGB(255, 100, 50).Println("自定义橘红色文字内容")

color.RGB(r, g, b) 传入0~255三原色数值,生成任意自定义前景色,适合个性化CLI工具、专属标识颜色。


常用拓展能力补充

1. 全局关闭色彩(日志文件输出时)

程序输出重定向到文件,不需要ANSI色彩码,一键关闭:

color.Disable()

2. 更多文本修饰符

// 加粗+下划线蓝色
style := color.New(color.FgBlue, color.Bold, color.Underline)
style.Println("加粗并带下划线文字")

修饰常量:
color.Bold 加粗、color.Underline 下划线、color.Italic 斜体、color.Strikethrough 删除线

3. 背景+前景+加粗完整组合示例

tip := color.New(color.FgWhite, color.Bold, color.BgCyan)
tip.Println("青色背景 白色加粗提示")

业务场景总结

  1. 后端服务日志美化:Error红、Success绿、Warn黄,快速区分日志级别
  2. CLI命令行工具:提示关键词上色、高亮ID/地址/数字
  3. 脚本批量处理:成功条目绿色、失败条目红色,肉眼快速筛选结果
  4. 调试打印:灰色打印SQL、入参等次要调试信息
  5. 表格/进度条输出:混合多色拼接,提升终端界面可读性
常用API分类速查
基础前景色请添加图片描述

Red Green Yellow Blue Cyan Magenta Gray White Black

背景色

RedBg GreenBg YellowBg BlueBg CyanBg

样式修饰

Bold 加粗 Underline 下划线 Blink 闪烁 Italic 斜体

日志快捷封装(业务推荐)

color.Success / Info / Warn / Error / Debug

打印方法
  • Print() 不换行
  • Println() 自动换行
  • Printf() 格式化占位输出
典型业务使用场景
  1. CLI命令行工具美化输出
  2. 服务本地控制台日志分级区分(成功/报错/警告)
  3. 脚本批量执行,高亮失败任务
  4. 导出日志文件时调用 color.Disable() 关闭颜色转义符,避免乱码
  5. 进度条、提示信息彩色标记
Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐