Go語言庫系列之aurora

背景介紹

今天跟你們推薦一款能夠給終端輸出上色的工具--aurora。git

file

極速上手

準備工做

初始化項目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

file

更多玩法

支持格式化輸出函數

除了換行輸出函數外,aurora還支持格式化輸出函數get

msg := fmt.Sprintf("My name is %s", Green("pingyeaa"))
fmt.Println(msg)

file

鏈式調用

咱們能夠嵌套調用,來個綠底加粗紅字

fmt.Println(BgGreen(Bold(Red("pingyeaa"))))

file

還能夠進行鏈式調用,一樣能夠達到相同效果,這種方式的可讀性更高一些

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))

支持灰階

所謂灰階,是將最亮與最暗之間的亮度變化,區分爲若干份

file

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

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

支持閃爍

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語言與技術原理。 關注我

相關文章
相關標籤/搜索