golang下在終端顯示字體顏色及閃爍、下划線效果的小工具


在終端下打印不同顏色的字體,具體說明見:http://blog.csdn.net/gxut555/article/details/7913591

自己用golang實現一個,除了在MAC下顯示不出效果來,其他端上還算正常了,效果所示:

 

 

代碼如下(見:https://github.com/liuyongshuai/goColorTerm):

/*
 * @author      Liu Yongshuai<liuyongshuai@hotmail.com>
 * @package     tofuutils
 * @date        2018-01-25 19:19
 */
package tofuutils

import (
	"fmt"
	"strings"
)

//綠色字體,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 {
	//閃爍效果
	isBlink := 0
	if len(extraArgs) > 0 {
		isBlink, _ = MakeItemElem(extraArgs[0]).ToInt()
	}
	//下划線效果
	isUnderLine := 0
	if len(extraArgs) > 1 {
		isUnderLine, _ = MakeItemElem(extraArgs[1]).ToInt()
	}
	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 tofuutils

import (
	"testing"
	"fmt"
)

func TestCliColor(t *testing.T) {
	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"))
	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))
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM