给你一点颜色看看?Go彩色输出

694 阅读1分钟

简介

在逛github时发现一个好玩的Go项目,彩色输出文本

image.png

说明

支持Linux彩色输出

image.png

支持Windows彩色输出

image.png

Golang IDE输出是不支持的 image.png

使用

效果图

image.png

CODE DEMO

package main

import (
   "fmt"
   "github.com/fatih/color"
)

func main() {
   color.Cyan("蓝绿色.")
   color.Blue("蓝色.")
   color.Red("红色.")
   color.Magenta("品平.")
   color.White("白色.")
   color.Black("黑色.")
   color.Yellow("----------------_----------------")
   color.Yellow("WARNING - WARNING!")
   color.Yellow("WARNING - WARNING.")
   color.Yellow("----------------_----------------")

   //Bold 高亮粗体
   bold := color.New(color.Bold).Add(color.FgGreen)
   bold.Printf("color: %s\n",color.CyanString("heihei"))
   fmt.Printf("color: %s\n",color.GreenString("haha"))

   //BgGreen背影绿色
   //Underline带下划线
   c := color.New(color.BgGreen).Add(color.Underline)
   c.Printf("背景绿色且带下划线的")
   fmt.Println("")

   //自定义提示
   success := color.New(color.Bold, color.FgGreen).PrintlnFunc()
   warning := color.New(color.Bold, color.FgYellow).PrintlnFunc()
   error := color.New(color.Bold, color.FgRed).PrintlnFunc()
   info := color.New(color.Bold, color.FgWhite).PrintlnFunc()
   success("成功")
   warning("警告")
   error("错误")
   info("信息")

   //除了高亮和下划线还有其它几种功能,比如
   Faint := color.New(color.Faint, color.FgHiWhite).PrintlnFunc()
   Italic := color.New(color.Italic, color.FgHiWhite).PrintlnFunc()
   BlinkSlow := color.New(color.BlinkSlow, color.FgHiWhite).PrintlnFunc()
   BlinkRapid := color.New(color.BlinkRapid, color.FgHiWhite).PrintlnFunc()
   ReverseVideo := color.New(color.ReverseVideo, color.FgHiWhite).PrintlnFunc()
   Concealed := color.New(color.Concealed, color.FgHiWhite).PrintlnFunc()
   CrossedOut := color.New(color.CrossedOut, color.FgHiWhite).PrintlnFunc()
   Faint("模糊")
   Italic("斜体")
   BlinkSlow("闪光")
   BlinkRapid("快闪")
   ReverseVideo("反转")
   Concealed("隐藏")
   CrossedOut("删除线")
}

小结

  1. 该包共提供了:黑、白、红、绿、蓝、紫、黄、蓝绿共8种颜色,且不支持颜色混合,以最后一参数为准
  2. 该包共提供了: 高亮粗体、模糊、斜体、闪光、反转、隐藏、删除线等功能,快闪好像没有测出来
  3. 该包封装了fmt.Fprintln方法,可以直接使用c.Println等
func (c *Color) Println(a ...interface{}) (n int, err error) {
   c.Set()
   defer c.unset()

   return fmt.Fprintln(Output, a...)
}