Go如何輸出ANSI 顏色代碼

這連天bee升級到了1.5版本,在執行bee version的時候會輸出一個有顏色的BEE的logo,不少人覺着很神奇,其實這個就是ANSI顏色代碼。git

其實在Linux,咱們編寫C語言輕易能夠實現這個效果。github

具體的書寫格式以下:小程序

格式:\033[顯示方式;前景色;背景色m
 
說明:
前景色            背景色           顏色
---------------------------------------
30                40              黑色
31                41              紅色
32                42              綠色
33                43              黃色
34                44              藍色
35                45              紫紅色
36                46              青藍色
37                47              白色
顯示方式           意義
-------------------------
0                終端默認設置
1                高亮顯示
4                使用下劃線
5                閃爍
7                反白顯示
8                不可見
 
例子:
\033[1;31;40m    <!--1-高亮顯示 31-前景色紅色  40-背景色黑色-->
\033[0m          <!--採用終端默認設置,即取消顏色設置-->

詳細資料,請參看https://en.wikipedia.org/wiki/ANSI_escape_code#Colorswindows

可是在windows下就比較難作到。code

The Win32 console did not support ANSI escape sequences at all until Windows 10 "Threshold 2".[10] Some replacements or additions for the console window such as JP Software's TCC (formerly 4NT), Michael J. Mefford's ANSI.COM, Jason Hood's ANSICON[11] and Maximus5's ConEmu do interpret ANSI escape sequences printed by programs.orm

從這段能夠看出win 10才支持。ip

內事不明問百度,外事不清問谷歌。搜索到https://github.com/fatih/color這個神器。ci

go get github.com/fatih/color

下面我就模仿bee寫一個小程序。get

package main

import (
	"fmt"

	"github.com/fatih/color"
)

func main() {

	beeStrUp := `______
| ___ \
| |_/ /  ___   ___
| ___ \ / _ \ / _ \
| |_/ /|  __/|  __/
\____/  \___| \___| v1.5.0
`
	beeStrDown := `
├── Beego     : 1.7.0
├── GoVersion : go1.6.2
├── GOOS      : windows
├── GOARCH    : amd64
├── NumCPU    : 8
├── GOPATH    : x:\Eagle\go
├── GOROOT    : y:\Go\
├── Compiler  : gc
└── Date      : Friday, 19 Aug 2016`
	color.Set(color.FgMagenta, color.Bold)
	defer color.Unset()
	fmt.Println(beeStrUp)
	color.Set(color.FgGreen, color.Bold)
	fmt.Println(beeStrDown)
}

運行結果:it

相關文章
相關標籤/搜索