golang下在终端显示字体颜色及闪烁、下划线效果的小工具

liuyongshuai · · 3375 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

在终端下打印不同颜色的字体,具体说明见:http://blog.csdn.net/gxut555/article/details/7913591 自己用golang实现一个,除了在MAC下显示不出效果来,其他端上还算正常了,效果所示: 代码如下(见:https://github.com/liuyongshuai/goutils/ . ): ``` /* * @author Liu Yongshuai<liuyongshuai@hotmail.com> * @package goColorTerm * @date 2018-01-25 19:19 */ package goColorTerm import ( "fmt" "strings" "reflect" ) //绿色字体,modifier里,第一个控制闪烁,第二个控制下划线 func Green(str string, modifier ...interface{}) string { return cliColorRender(str, 32, 0, modifier...) } //淡绿 func LightGreen(str string, modifier ...interface{}) string { return cliColorRender(str, 32, 1, modifier...) } //青色/蓝绿色 func Cyan(str string, modifier ...interface{}) string { return cliColorRender(str, 36, 0, modifier...) } //淡青色 func LightCyan(str string, modifier ...interface{}) string { return cliColorRender(str, 36, 1, modifier...) } //红字体 func Red(str string, modifier ...interface{}) string { return cliColorRender(str, 31, 0, modifier...) } //淡红色 func LightRed(str string, modifier ...interface{}) string { return cliColorRender(str, 31, 1, modifier...) } //黄色字体 func Yellow(str string, modifier ...interface{}) string { return cliColorRender(str, 33, 0, modifier...) } //黑色 func Black(str string, modifier ...interface{}) string { return cliColorRender(str, 30, 0, modifier...) } //深灰色 func DarkGray(str string, modifier ...interface{}) string { return cliColorRender(str, 30, 1, modifier...) } //浅灰色 func LightGray(str string, modifier ...interface{}) string { return cliColorRender(str, 37, 0, modifier...) } //白色 func White(str string, modifier ...interface{}) string { return cliColorRender(str, 37, 1, modifier...) } //蓝色 func Blue(str string, modifier ...interface{}) string { return cliColorRender(str, 34, 0, modifier...) } //淡蓝 func LightBlue(str string, modifier ...interface{}) string { return cliColorRender(str, 34, 1, modifier...) } //紫色 func Purple(str string, modifier ...interface{}) string { return cliColorRender(str, 35, 0, modifier...) } //淡紫色 func LightPurple(str string, modifier ...interface{}) string { return cliColorRender(str, 35, 1, modifier...) } //棕色 func Brown(str string, modifier ...interface{}) string { return cliColorRender(str, 33, 0, modifier...) } func cliColorRender(str string, color int, weight int, extraArgs ...interface{}) string { //闪烁效果 var isBlink int64 = 0 if len(extraArgs) > 0 { isBlink = reflect.ValueOf(extraArgs[0]).Int() } //下划线效果 var isUnderLine int64 = 0 if len(extraArgs) > 1 { isUnderLine = reflect.ValueOf(extraArgs[1]).Int() } var mo []string if isBlink > 0 { mo = append(mo, "05") } if isUnderLine > 0 { mo = append(mo, "04") } if weight > 0 { mo = append(mo, fmt.Sprintf("%d", weight)) } if len(mo) <= 0 { mo = append(mo, "0") } return fmt.Sprintf("\033[%s;%dm"+str+"\033[0m", strings.Join(mo, ";"), color) } ``` 测试代码: ``` package goColorTerm import ( "testing" "fmt" ) func TestCliColor(t *testing.T) { //默认的不带任何效果的字体显示 fmt.Println(Green("字体:Green")) fmt.Println(LightGreen("字体:LightGreen")) fmt.Println(Cyan("字体:Cyan")) fmt.Println(LightCyan("字体:LightCyan")) fmt.Println(Red("字体:Red")) fmt.Println(LightRed("字体:LightRed")) fmt.Println(Yellow("字体:Yellow")) fmt.Println(Black("字体:Black")) fmt.Println(DarkGray("字体:DarkGray")) fmt.Println(LightGray("字体:LightGray")) fmt.Println(White("字体:White")) fmt.Println(Blue("字体:Blue")) fmt.Println(LightBlue("字体:LightBlue")) fmt.Println(Purple("字体:Purple")) fmt.Println(LightPurple("字体:LightPurple")) fmt.Println(Brown("字体:Brown")) fmt.Println(Blue("字体:Blue", 1, 1)) //带闪烁效果的彩色字体显示 fmt.Println(Green("闪烁字体:Green", 1, 1)) fmt.Println(LightGreen("闪烁字体:LightGreen", 1)) fmt.Println(Cyan("闪烁字体:Cyan", 1)) fmt.Println(LightCyan("闪烁字体:LightCyan", 1)) fmt.Println(Red("闪烁字体:Red", 1)) fmt.Println(LightRed("闪烁字体:LightRed", 1)) fmt.Println(Yellow("闪烁字体:Yellow", 1)) fmt.Println(Black("闪烁字体:Black", 1)) fmt.Println(DarkGray("闪烁字体:DarkGray", 1)) fmt.Println(LightGray("闪烁字体:LightGray", 1)) fmt.Println(White("闪烁字体:White", 1)) fmt.Println(Blue("闪烁字体:Blue", 1)) fmt.Println(LightBlue("闪烁字体:LightBlue", 1)) fmt.Println(Purple("闪烁字体:Purple", 1)) fmt.Println(LightPurple("闪烁字体:LightPurple", 1)) fmt.Println(Brown("闪烁字体:Brown", 1)) //带下划线效果的字体显示 fmt.Println(Green("闪烁且带下划线字体:Green", 1, 1, 1)) fmt.Println(LightGreen("闪烁且带下划线字体:LightGreen", 1, 1)) fmt.Println(Cyan("闪烁且带下划线字体:Cyan", 1, 1)) fmt.Println(LightCyan("闪烁且带下划线字体:LightCyan", 1, 1)) fmt.Println(Red("闪烁且带下划线字体:Red", 1, 1)) fmt.Println(LightRed("闪烁且带下划线字体:LightRed", 1, 1)) fmt.Println(Yellow("闪烁且带下划线字体:Yellow", 1, 1)) fmt.Println(Black("闪烁且带下划线字体:Black", 1, 1)) fmt.Println(DarkGray("闪烁且带下划线字体:DarkGray", 1, 1)) fmt.Println(LightGray("闪烁且带下划线字体:LightGray", 1, 1)) fmt.Println(White("闪烁且带下划线字体:White", 1, 1)) fmt.Println(Blue("闪烁且带下划线字体:Blue", 1, 1)) fmt.Println(LightBlue("闪烁且带下划线字体:LightBlue", 1, 1)) fmt.Println(Purple("闪烁且带下划线字体:Purple", 1, 1)) fmt.Println(LightPurple("闪烁且带下划线字体:LightPurple", 1, 1)) fmt.Println(Brown("闪烁且带下划线字体:Brown", 1, 1)) } ```

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3375 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
2 回复  |  直到 2018-02-02 13:25:20
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传