背景介绍

今天跟大家推荐一款可以给终端输出上色的工具--aurora。

极速上手

准备工作

初始化项目

go mod init aurora

演示项目结构

.
├── go.mod
├── go.sum
└── main.go

安装aurora包

go get -u github.com/logrusorgru/aurora

代码演示

首先引入aurora库

import . "github.com/logrusorgru/aurora"

输出一个品红颜色的内容,Magenta是以颜色命名的方法

fmt.Println("Hello,", Magenta("Aurora"))

再输出一个加粗的青色的名称

fmt.Println(Bold(Cyan("Cya!")))

完整代码如下

package main

import (
"fmt" . "github.com/logrusorgru/aurora"
) func main() {
fmt.Println("Hello,", Magenta("Aurora"))
fmt.Println(Bold(Cyan("Cya!")))
}

运行后输出内容如下

更多玩法

支持格式化输出函数

除了换行输出函数外,aurora还支持格式化输出函数

msg := fmt.Sprintf("My name is %s", Green("pingyeaa"))
fmt.Println(msg)

链式调用

我们可以嵌套调用,来个绿底加粗红字

fmt.Println(BgGreen(Bold(Red("pingyeaa"))))

还可以进行链式调用,同样可以达到相同效果,这种方式的可读性更高一些

fmt.Println(Red("pingyeaa").Bold().BgGreen())

更简便的写法

除了链式调用外,还有一种更简便的写法,就是通过位或运算符来实现

fmt.Println(Colorize("Greeting", GreenFg|RedBg|BoldFm))

官方定义了10种常量,感兴趣的同学可以自行研究源码

const (

	BlackBg   Color = (iota << shiftBg) | flagBg // 40, 100
RedBg // 41, 101
GreenBg // 42, 102
YellowBg // 43, 103
BlueBg // 44, 104
MagentaBg // 45, 105
CyanBg // 46, 106
WhiteBg // 47, 107 BrightBg Color = ((1 << 3) << shiftBg) | flagBg // -> 100 BrownBg = YellowBg maskBg = (0xff << shiftBg) | flagBg
)

同样也可以搭配链式调用使用

fmt.Println(Red("x").Colorize(GreenFg))

支持灰阶

所谓灰阶,是将最亮与最暗之间的亮度变化,区分为若干份

方法中的数字代表灰色深度的数值,支持背景和文字上色

fmt.Println("  ",
Gray(1-1, " 00-23 ").BgGray(24-1),
Gray(4-1, " 03-19 ").BgGray(20-1),
Gray(8-1, " 07-15 ").BgGray(16-1),
Gray(12-1, " 11-11 ").BgGray(12-1),
Gray(16-1, " 15-07 ").BgGray(8-1),
Gray(20-1, " 19-03 ").BgGray(4-1),
Gray(24-1, " 23-00 ").BgGray(1-1),
)

支持闪烁

fmt.Println(Blink("Blink"))

限制

格式化输出函数中的%T%p是没办法上色的

r := Red("red")
var i int
fmt.Printf("%T %p\n", r, Green(&i))
aurora.value %!p(aurora.value={0xc42000a310 768 0})

但是可以通过在外层嵌套颜色来解决

fmt.Println(Red(fmt.Sprintf("%T %p\n", r, Green(&i))))

Go语言库代码示例,欢迎star

https://github.com/pingyeaa/golang-examples

感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。

最新文章

  1. Oracle 数据库基础学习 (八) PL/SQL综合练习
  2. Objective-C 30分钟入门教程
  3. jquery 抽奖示例
  4. [Tips] JavaScript 使用hash 对象传参
  5. Fortran学习心得
  6. Mybatis学习之配置文件
  7. POJ3690 Constellations 【KMP】
  8. 多线程编程学习笔记——async和await(一)
  9. svn的使用技巧
  10. ●BZOJ 2337 [HNOI2011]XOR和路径
  11. 微信小程序支付,带java源码
  12. 什么是Tensor
  13. form,ajax注册,logging日志使用
  14. 【.NET】.NET MVC4 微信扫一扫功能实现-附全部代码
  15. python基础-----函数/装饰器
  16. python中常用的模块二
  17. hdu 4975 最大流快版
  18. luoguP3317 [SDOI2014]重建 变元矩阵树定理 + 概率
  19. C#应用视频教程3.3 Halcon+C#测试
  20. 【Todo】Boost安装与学习

热门文章

  1. UIView绘制原理,异步绘制
  2. 【Spring Data 系列学习】Spring Data JPA 基础查询
  3. Java中如何更优雅的处理空值
  4. deepin中安装pycharm过程
  5. Python正则表达式语法
  6. Asp.Net Core 中IdentityServer4 授权中心之应用实战
  7. 基于springcloud搭建项目-Feign篇(四)
  8. RabbitMQ面试题集锦(精选)(另附思维导图)
  9. iOS开发 - 设立UIButton的Image为Aspect Fit
  10. 17-Java-文件上传报错(commons-fileupload包和commons-io包不支持JDK版本:UnsupportedClassVersionError: org/apache/commons/io/IOUtils : Unsupported major.minor version 52.0)