Go語言庫系列之aurora
背景介紹
今天跟大家推薦一款可以給終端輸出上色的工具--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語言與技術原理。

Go語言組件學習示例開源庫,歡迎star
https://github.com/EnochZg/golang-examples

浙公網安備 33010602011771號