Go语言库系列之aurora
程序员文章站
2022-05-04 11:15:08
背景介绍 今天跟大家推荐一款可以给终端输出上色的工具 aurora。 极速上手 准备工作 初始化项目 演示项目结构 安装aurora包 代码演示 首先引入aurora库 输出一个品红颜色的内容,Magenta是以颜色命名的方法 再输出一个加粗的青色的名称 完整代码如下 运行后输出内容如下 更多玩法 ......
背景介绍
今天跟大家推荐一款可以给终端输出上色的工具--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
感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦go语言与技术原理。