color - 让你的输出带点颜色

color

color 是一个可以让你输出带颜色文本的库。

安装

go get github.com/fatih/color

示例

  1. 输出到控制台
// 这会直接输出到控制台
color.Cyan("Prints text in cyan.")// 每个调用末尾会自动加上换行
color.Blue("Prints %s in blue.", "text")// 这种调用使用默认的背景色
color.Red("We have red")
color.Magenta("And many others ..")

效果:

在这里插入图片描述

  1. 混合样式:颜色 + 粗体/斜体、下划线等
// 创建一个新的 color 对象,然后加上 “下划线” 样式
c := color.New(color.FgCyan).Add(color.Underline)  // 下划线
c.Println("Prints cyan text with an underline.")// 创建一个新的 color 对象,颜色为 FgCyan,字体为粗体
d := color.New(color.FgCyan, color.Bold)  // 粗体
d.Printf("This prints bold cyan %s\n", "too!.")// 创建一个颜色为 FgRed 的 color 对象
red := color.New(color.FgRed)// 在这个颜色为 FgRed 的 color 对象的基础上,加上 “粗体” 的样式
boldRed := red.Add(color.Bold) // 红色 + 粗体
boldRed.Println("This will print text in bold red.")// 在 红色 + 粗体 的 color 对象的基础上,加上 “白色背景” 的样式
whiteBackground := red.Add(color.BgWhite) // 红色 + 粗体 + 白色背景
whiteBackground.Println("Red text with white background.")

效果:

在这里插入图片描述

  1. 使用自定义的输出方向(实现了 io.Writer 即可):比如文件等
// 使用自定义的 `io.Writer` 保存 color 的输出
color.New(color.FgBlue).Fprintln(myWriter, "blue color!")blue := color.New(color.FgBlue)
blue.Fprint(writer, "This will print text in blue.")
  1. 自定义 print 函数:PrintFunc
// 创建一个新的自定义的 print 函数
red := color.New(color.FgRed).PrintfFunc()
red("Warning")
red("Error: %s", err)// 创建自定义打印函数,并且添加 粗体 + 绿色 样式
notice := color.New(color.Bold, color.FgGreen).PrintlnFunc()
notice("Don't forget this...")
  1. 自定义 fprint 函数:FprintFunc
// 创建一个自定义的 fprint 函数
blue := color.New(color.FgBlue).FprintfFunc()
blue(myWriter, "important notice: %s", stars)// 创建一个自定义的 fprint 函数,并且 粗体 + 绿色 字体
success := color.New(color.Bold, color.FgGreen).FprintlnFunc()
success(myWriter, "Don't forget this...")
  1. 无颜色字符串里面穿插有颜色的字符串
// SprintFunc 调用的效果是返回一个字符串,而不是直接输出了
yellow := color.New(color.FgYellow).SprintFunc()
red := color.New(color.FgRed).SprintFunc()
fmt.Printf("This is a %s and this is %s.\n", yellow("warning"), red("error"))info := color.New(color.FgWhite, color.BgGreen).SprintFunc()
fmt.Printf("This %s rocks!\n", info("package"))// 也可以直接使用 helper 函数
fmt.Println("This", color.RedString("warning"), "should be not neglected.")
fmt.Printf("%v %v\n", color.GreenString("Info:"), "an important message.")// windows 也支持
fmt.Fprintf(color.Output, "Windows support: %s", color.GreenString("PASS"))
  1. 在现有的代码上使用
// 在 `color.Set()` 和 `color.Unset()` 之间的代码会有颜色
color.Set(color.FgYellow)fmt.Println("Existing text will now be in yellow")
fmt.Printf("This one %s\n", "too")color.Unset() // 需要手动调用 Unset,否则后续代码输出都会有颜色// 也可以添加其他样式,这里加了 粗体
color.Set(color.FgMagenta, color.Bold)
defer color.Unset() // 函数结束的时候 Unsetfmt.Println("All text will now be bold magenta.")

禁用颜色

color.NoColor = true

其他解决方案

  1. gookit/color

  2. lucasb-eyer/go-colorful

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661014.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware vCenter告警:vSphere UI运行状况警报

vSphere UI运行状况警报 不会详细显示告警的具体内容,需要我们自己进一步确认告警原因。 vSphere UI运行状况警报是一种监控工具,用于检测vSphere环境中的潜在问题。当警报触发时,通常表示系统遇到了影响性能或可用性的问题。解决vSphere UI…

软件测试之软件缺陷管理

什么是软件缺陷 标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背 软件缺陷的生命周期 一个缺陷的正常生命周期是 新建&#xff…

如何分辨坏信息?

每当有社会热点,大家也许都会遇到一个困扰: 铺天盖地的信息,实在是太多了。究竟哪一些值得信任,哪些不值得信任?哪些可以接受,哪些最好保持怀疑? 我想用这篇文章,彻底把这个问题讲清…

CSS定位

定位的组成: 这个属性只有当position属性设置为absolute、fixed、relative时才有效。而且在position属性取值不同时,它们的含义也不同。left和right属性值除了可以设置为绝对的像素数外,还可以设置百分数。 定位模式: 静态定位st…

易语言系列学习1

通过本文章你会学习到 如果 如果真 获取编辑框内容 关闭本程序 监听按键让它等价于点击某个按钮 运算:或 且 非(注意中间要有一个空格,否则会报错) 效果 .版本 2.程序集 窗口程序集_启动窗口.子程序 _按钮2_被单击. 如果真 (编…

【项目实践02】【优先级阻塞队列】

文章目录 一、前言二、项目背景三、实现方案四、思路延伸1. 优先级队列1.1 concurrent 包下的 PriorityBlockingQueue1.2 Redisson 的优先级阻塞队列 2. jvisualvm 远程连接3. Jstack 高 CPU 排查 五、参考内容 一、前言 本系列用来记录一些在实际项目中的小东西,并…

qemu 抓取linux kernel vmcore

一、背景 在qemu调试linux kernel时 有时我们会遇到dump 情况,这时可以通过gdb 方式连接分析dump, 但实际中我们用得更多的是离线dump 分析,分析的文件通常是vmcore(linux kernel panic 生成的coredump文件)或者ramdu…

【多个SpringBoot模块项目如何变成聚合项目】

【前言】 项目虽然是Eureka、OpenFeign 进行服务注册和服务调用,但是每个模块都是一个单独的SpringBoot,启动每个模块都需要单独启动一个idea,觉得这个过于繁琐,现在想把项目变成一个聚合项目,只需要启动一个idea即可。 【过程】…

【数据结构 08】红黑树

一、概述 红黑树,是一种二叉搜索树,每一个节点上有一个存储位表示节点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长上两倍,因而是接进…

UGUI中Text和TextMeshPro实现图文混排方式

一些项目中实现图文混排是自定义一个脚本去继承Text类,然后文本中用富文本的方式进行图片和超链接的定义,在代码中用正则表达式匹配的方式把文本中图片和超链接给替换,如下: TextMeshPro实现是生成SpriteAsset进行图文混排的&…

YOLOv8-Segment C++

YOLOv8-Segment C https://github.com/triple-Mu/YOLOv8-TensorRT 这张图像是运行yolov8-seg程序得到的结果图,首先是检测到了person、bus及skateboard(这个是检测错误,将鞋及其影子检测成了滑板,偶尔存在错误也属正常),然后用方…

go并发编程-runtime、Channel与Goroutine

1. runtime包 1.1.1. runtime.Gosched() 让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见面就黄不耽误你继续烧烤,第二种情况就是你相亲速度…

电脑用的视频编辑软件有哪些 视频剪辑软件排行榜 视频剪辑软件推荐 视频剪辑培训学习 视频剪辑制作自学 电脑视频剪辑需要什么配置

电脑视频剪辑软件这么多,到底哪些比较好用?下面就让我们以十大电脑视频剪辑软件排行榜来细数好用的软件。另外,电脑视频剪辑需要什么配置?本文也会给大家从内存、CPU等参数上介绍,并推荐好用的电脑设备。 一、十大电脑…

Javaweb之SpringBootWeb案例之配置文件的详细解析

4. 配置文件 员工管理的增删改查功能我们已开发完成,但在我们所开发的程序中还一些小问题,下面我们就来分析一下当前案例中存在的问题以及如何优化解决。 4.1 参数配置化 在我们之前编写的程序中进行文件上传时,需要调用AliOSSUtils工具类&…

基于springboot+vue的校园赛事资讯网站(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【Python笔记-设计模式】建造者模式

一、说明 又称生成器,是一种创建型设计模式,使其能够分步骤创建复杂对象。允许使用相同的创建代码生成不同类型和形式的对象。 (一) 解决问题 对象的创建问题:当一个对象的构建过程复杂,且部分构建过程相互独立时,可…

leetcode-704.二分查找

题目 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9输出: 4 解释: 9 …

Web性能优化之如何评估网页性能——性能指标和度量工具介绍

前言 用户在访问 web 网页时,大部分都希望网页能够在一秒完成。事实上,加载时间每多 1 秒,就会流失 7%的用户。如果时间超过 8s 用户就会感到不耐烦、会放弃访问。这也就是著名的 “8秒原则”。 虽然当今设备及网络环境都大幅提升&#xff…

Android 跳转应用设置/热点界面或等常用操作

Android 跳转应用设置/热点界面或等常用操作 https://www.jianshu.com/p/ba7164126690 android学习进阶——Setting https://blog.csdn.net/csdn_wanziooo/article/details/81980984 Android 7.1 以太网反射 EthernetManager 配置 DHCP、静态 IP https://codeleading.com/art…

Java List的合并与切分

在Java开发中经常遇到list结构数据的处理,如List的合并或拆分,记录下来,方便备查。 一、List 合并 两个list数据的合并处理,可使用Java8 新特性的stream流,根据实际需要遍历取值。 1、定义 UserInfo 对象 订单的相…