llvm-gcc-compat补齐cc 编译命令实现鸿蒙PC安装第三方库gookit/color,玩转go语言控制台彩色输出库
欢迎加入开源鸿蒙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 全平台兼容,自动识别终端支持度,无需额外配置。
核心作用
- 日志分级染色:红=错误、黄=警告、绿=成功、蓝=信息、灰=调试
- 命令行工具美化输出,区分不同类型文本
- 支持链式调用、模板渲染、自定义颜色、256真彩色
- 一键关闭颜色输出(日志文件导出时自动屏蔽)
- 极简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汇总
- 直接打印:
color.Red.Print/Println/Printf - 生成彩色字符串用于拼接:
.Sprint() - 复合样式复用:
color.New(样式列表) - 背景色系列:
color.BgRed/BgGreen - 分级日志快捷打印:
color.Error/Warn/Info/Success/Debug - 自定义颜色:
color.RGB(r,g,b)
五、使用场景与注意事项
适用场景
- Golang CLI命令行工具美化输出
- 定时脚本、后台任务彩色日志
- 单元测试、压测脚本结果打印
- 服务启动打印Banner、状态提示
生产小提示
- 日志持久化到文件时,ANSI色彩控制码会混入文本;建议增加环境开关,生产环境关闭彩色输出。
- 重复使用的加粗标题、固定提示样式,提前用
color.New创建对象复用,减少重复创建开销。 - Windows旧版cmd原生支持ANSI色彩,无颜色时会自动降级为普通黑白文本,不会出现乱码。
一、安装依赖
go get github.com/gookit/color
导入包:
import (
"fmt"
"github.com/gookit/color"
)
核心概念前置
- 前景色(Fg):文字本身颜色
- 背景色(Bg):文字后方底色
- 样式修饰:Bold加粗、Underline下划线、Italic斜体等
- 两种使用模式:
- 快捷静态对象:
color.Red/color.Success开箱即用 - 自定义样式:
color.New(颜色, 修饰符)自由组合
- 快捷静态对象:
- 输出方法区分:
.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("青色背景 白色加粗提示")
业务场景总结
- 后端服务日志美化:Error红、Success绿、Warn黄,快速区分日志级别
- CLI命令行工具:提示关键词上色、高亮ID/地址/数字
- 脚本批量处理:成功条目绿色、失败条目红色,肉眼快速筛选结果
- 调试打印:灰色打印SQL、入参等次要调试信息
- 表格/进度条输出:混合多色拼接,提升终端界面可读性
常用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()格式化占位输出
典型业务使用场景
- CLI命令行工具美化输出
- 服务本地控制台日志分级区分(成功/报错/警告)
- 脚本批量执行,高亮失败任务
- 导出日志文件时调用
color.Disable()关闭颜色转义符,避免乱码 - 进度条、提示信息彩色标记
更多推荐




所有评论(0)