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

相关文章
相关标签/搜索