Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go每日一库之151:aurora(终端输出上色)

Go每日一库之151:aurora(终端输出上色)

作者头像
luckpunk
发布于 2023-10-02 00:15:47
发布于 2023-10-02 00:15:47
35800
代码可运行
举报
运行总次数:0
代码可运行

背景介绍

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

极速上手

准备工作

初始化项目

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go mod init aurora

演示项目结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── go.mod
├── go.sum
└── main.go

安装aurora包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
go get -u github.com/logrusorgru/aurora

代码演示

首先引入aurora库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import . "github.com/logrusorgru/aurora"

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println("Hello,", Magenta("Aurora"))

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Bold(Cyan("Cya!")))

完整代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package main

import (
    "fmt"

    . "github.com/logrusorgru/aurora"
)

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

运行后输出内容如下

更多玩法

支持格式化输出函数

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
msg := fmt.Sprintf("My name is %s", Green("pingyeaa"))
fmt.Println(msg)

链式调用

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(BgGreen(Bold(Red("pingyeaa"))))

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Red("pingyeaa").Bold().BgGreen())

更简便的写法

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Colorize("Greeting", GreenFg|RedBg|BoldFm))

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Red("x").Colorize(GreenFg))

支持灰阶

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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),
)

支持闪烁

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Blink("Blink"))

限制

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fmt.Println(Red(fmt.Sprintf("%T %p\n", r, Green(&i))))
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Go语言库系列之aurora
感谢大家的观看,如果觉得文章对你有所帮助,欢迎关注公众号「平也」,聚焦Go语言与技术原理。
平也
2020/04/05
4750
chalk.js(node终端样式库)
<pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="javascript" contenteditable="true" cid="n33" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; color: rgb(51, 51, 51); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">const chalk = reuquire("chalk") const log = console.log ​ // 颜色字体 log( chalk.red("红色") ) ​ // 背景色 log( chalk.bgBlue("蓝色背景") ) ​ // 样式字体 log( chalk.bold("加粗") ) ​ // 多参数 log( chalk.blue("name", "age", "job") ) ​ // ES6 多行文本 log( // 多行文本将保留缩进格式 chalk.blue(name: Rogan age: ${25} job: ${ 'IT' }) ) ​ ​ // 其他颜色设置方式 log(chalk.keyword("orange")(' keyword ')) // 关键字 log(chalk.rgb(100, 100, 100)(' rgb ')) // rgb log(chalk.hex('#ffffff')(' hex ')) // hex ​ ​ ​ // 样式组合 log(colors: ${chalk.blue('blue')}, ${chalk.red('red')}) // 拼接 ​ log(chalk.blue.bold("Title")) // 链式组合 ​ log( chalk.bgYellow(error: ${chalk.red(" chalk is undefined ")}) ) // 嵌套 ​ ​ ​ // 自定义组合 const error = chalk.bgRed; const warning = chalk.yellow.bold;</pre>
copy_left
2019/08/21
2.9K0
Go每日一库之88:color
Golang下的命令行色彩使用库, 拥有丰富的色彩渲染输出,通用的API方法,兼容Windows系统
luckpunk
2023/09/30
5710
Go每日一库之88:color
color:让终端输出更多彩
在日常的开发过程中,我们经常需要在终端中输出信息。为了让这些信息更加直观和易读,使用不同的色彩是一种很好的方式。github.com/fatih/color 是一个轻量级且功能强大的Go语言库,可以方便地为终端输出添加颜色和样式。
孟斯特
2024/08/12
2620
color:让终端输出更多彩
「Go工具箱」一个让终端内容彩色化的工具:Color
大家好,我是渔夫子。本号新推出「go工具箱」系列,意在给大家分享使用go语言编写的、实用的、好玩的工具。
Go学堂
2023/01/31
4820
我的vim配色
复制上面的内容保存为zjdark.vim,然后放在macvim或gvim的安装目录下的colors文件夹下,重启vim选择该主题即可
码客说
2019/10/22
1.1K0
Go 每日一库之 jennifer
今天我们介绍一个 Go 代码生成库jennifer。jennifer支持所有的 Go 语法和特性,可以用它来生成任何 Go 语言代码。
用户7731323
2020/09/08
9000
termcolor: 轻量级终端输出彩色文本库
总而言之,colorama 主要用于解决 Windows 系统的兼容性问题,而 termcolor 提供了更方便的文本着色函数。 根据你的需求选择合适的库即可。
luckpunk
2025/01/16
3010
termcolor: 轻量级终端输出彩色文本库
绚烂之境:Python Rich,让终端输出更炫酷!
在代码的世界里,每一行都是一个故事,每一个变量都是一个角色,而打印则是展示这些故事与角色的窗口。然而,这个窗口并非都是朴实无华的,有时候,我们需要一种更加「艺术」的方式来展示我们的故事。Python中的rich库便是一位大师级的艺术家,为我们的终端带来了绚丽的色彩和丰富的细节。
测试蔡坨坨
2024/04/11
1.2K0
绚烂之境:Python Rich,让终端输出更炫酷!
嵌入式linux之go语言开发(二)c动态库驱动调用
linux上的串口驱动,这个较简单,有标准的模块可用。操作的是标准的设备文件。如:ttys0等。
杨永贞
2020/08/04
2.3K0
Go 每日一库之 validator
今天我们来介绍一个非常实用的库——validator。validator用于对数据进行校验。在 Web 开发中,对用户传过来的数据我们都需要进行严格校验,防止用户的恶意请求。例如日期格式,用户年龄,性别等必须是正常的值,不能随意设置。
用户7731323
2020/09/08
1.4K0
如何打造属于你Kali Linux 之终端改造(一)
逍遥子大表哥
2025/07/28
850
如何打造属于你Kali Linux 之终端改造(一)
每日一库:xorm
xorm 是一个功能强大的 Go 语言 ORM(对象关系映射)库,提供了许多特点和功能,使得与关系型数据库的交互更加便捷、高效。以下是 xorm 的一些主要特点:
孟斯特
2023/10/16
9090
每日一库:xorm
Python 技术篇-用xlwt库实现设置excel单元格背景颜色、给字体加粗实例演示,【附】xlwt库颜色对照表
xlwt.easyxf() 设置样式,pattern 指的就是背景,ice_blue 就是我设置的颜色。 font 就是设置字体,bold on 是加粗。 样式可以合一起,之间用分号;分开。
小蓝枣
2022/05/07
5200
Python 技术篇-用xlwt库实现设置excel单元格背景颜色、给字体加粗实例演示,【附】xlwt库颜色对照表
Go每日一库之158:termtables(表格形式数据输出)
今天学个简单点的,[termtables](https://github.com/scylladb/termtables)处理表格形式数据的输出。适用于随时随地的输出一些状态或统计数据,便于观察和调试。是一个很小巧的工具库。我在学习[dateparse](https://darjun.github.io/2021/06/24/godailylib/dateparse/)库时偶尔见遇到了这个库。
luckpunk
2023/10/02
3780
Go每日一库之152:gomacro(终端运行go代码)
[gomacro](https://github.com/cosmos72/gomacro) 是一个近乎完整的 Go 解释器,用纯 Go 实现,它同时提供交互式 REPL 和脚本模式,并且在运行时不需要 Go 工具链(除了一些非常特殊的场景:在运行时导入第三方包)。它在 Go 标准库之外有两个依赖项:github.com/peterh/liner 和 golang.org/x/tools/go/packages。
luckpunk
2023/10/02
6400
Go每日一库之152:gomacro(终端运行go代码)
Go 每日一库之 gjson
之前我们介绍过gojsonq,可以方便地从一个 JSON 串中读取值。同时它也支持各种查询、汇总统计等功能。今天我们再介绍一个类似的库gjson。在上一篇文章Go 每日一库之 buntdb中我们介绍过 JSON 索引,内部实现其实就是使用gjson这个库。gjson实际上是get + json的缩写,用于读取 JSON 串,同样的还有一个sjson(set + json)库用来设置 JSON 串。
用户7731323
2020/09/08
1.6K0
Go每日一库之100:websocket
Go语言标准包里面没有提供对WebSocket的支持,但是在由官方维护的go.net子包中有对这个的支持,需要独立下载。
luckpunk
2023/09/30
4560
Go 每日一库之 sjson
在上一篇文章中我们介绍了如何使用gjson快速读取 JSON 串中的值。为了内容的完整性,今天我们介绍一下如何使用sjson快速设置 JSON 串中的值。
用户7731323
2020/09/08
1.5K0
Go 每日一库之 fyne
Go 语言生态中,GUI 一直是短板,更别说跨平台的 GUI 了。fyne向前迈了一大步。fyne 是 Go 语言编写的跨平台的 UI 库,它可以很方便地移植到手机设备上。fyne使用上非常简单,同时它还提供fyne命令打包静态资源和应用程序。我们先简单介绍基本控件和布局,然后介绍如何发布一个fyne应用程序。
用户7731323
2020/09/08
7.2K0
相关推荐
Go语言库系列之aurora
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档