前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言库系列之aurora

Go语言库系列之aurora

原创
作者头像
平也
修改2020-04-07 11:27:01
4040
修改2020-04-07 11:27:01
举报
文章被收录于专栏:平也平也

背景介绍

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

file
file

极速上手

准备工作

初始化项目

代码语言:javascript
复制
go mod init aurora复制代码

演示项目结构

代码语言:javascript
复制
.
├── go.mod
├── go.sum
└── main.go复制代码

安装aurora包

代码语言:javascript
复制
go get -u github.com/logrusorgru/aurora复制代码

代码演示

首先引入aurora库

代码语言:javascript
复制
import . "github.com/logrusorgru/aurora"复制代码

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

代码语言:javascript
复制
fmt.Println("Hello,", Magenta("Aurora"))复制代码

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

代码语言:javascript
复制
fmt.Println(Bold(Cyan("Cya!")))复制代码

完整代码如下

代码语言:javascript
复制
package main

import (
    "fmt"

    . "github.com/logrusorgru/aurora"
)

func main() {
    fmt.Println("Hello,", Magenta("Aurora"))
    fmt.Println(Bold(Cyan("Cya!")))
}复制代码

运行后输出内容如下

file
file

更多玩法

支持格式化输出函数

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

代码语言:javascript
复制
msg := fmt.Sprintf("My name is %s", Green("pingyeaa"))
fmt.Println(msg)复制代码
file
file

链式调用

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

代码语言:javascript
复制
fmt.Println(BgGreen(Bold(Red("pingyeaa"))))复制代码
file
file

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

代码语言:javascript
复制
fmt.Println(Red("pingyeaa").Bold().BgGreen())复制代码

更简便的写法

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

代码语言:javascript
复制
fmt.Println(Colorize("Greeting", GreenFg|RedBg|BoldFm))复制代码

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

代码语言:javascript
复制
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
)复制代码

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

代码语言:javascript
复制
fmt.Println(Red("x").Colorize(GreenFg))复制代码

支持灰阶

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

file
file

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

代码语言:javascript
复制
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),
)复制代码
file
file

支持闪烁

代码语言:javascript
复制
fmt.Println(Blink("Blink"))复制代码

限制

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

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

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

代码语言:javascript
复制
fmt.Println(Red(fmt.Sprintf("%T %p\n", r, Green(&i))))复制代码

Go语言库代码示例,欢迎star github.com/pingyeaa/go…


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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 极速上手
    • 准备工作
      • 代码演示
      • 更多玩法
        • 支持格式化输出函数
          • 链式调用
            • 更简便的写法
              • 支持灰阶
                • 支持闪烁
                  • 限制
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档