背景介紹
今天跟你們推薦一款能夠給終端輸出上色的工具--aurora。git
極速上手
準備工做
初始化項目github
go mod init aurora
演示項目結構golang
. ├── go.mod ├── go.sum └── main.go
安裝aurora包shell
go get -u github.com/logrusorgru/aurora
代碼演示
首先引入aurora庫函數
import . "github.com/logrusorgru/aurora"
輸出一個品紅顏色的內容,Magenta是以顏色命名的方法工具
fmt.Println("Hello,", Magenta("Aurora"))
再輸出一個加粗的青色的名稱3d
fmt.Println(Bold(Cyan("Cya!")))
完整代碼以下code
package main import ( "fmt" . "github.com/logrusorgru/aurora" ) func main() { fmt.Println("Hello,", Magenta("Aurora")) fmt.Println(Bold(Cyan("Cya!"))) }
運行後輸出內容以下blog
更多玩法
支持格式化輸出函數
除了換行輸出函數外,aurora還支持格式化輸出函數get
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語言與技術原理。