color
color 是一个可以让你输出带颜色文本的库。
安装
go get github.com/fatih/color
示例
- 输出到控制台
// 这会直接输出到控制台 color.Cyan("Prints text in cyan.") // 每个调用末尾会自动加上换行 color.Blue("Prints %s in blue.", "text") // 这种调用使用默认的背景色 color.Red("We have red") color.Magenta("And many others ..")
效果:
- 混合样式:颜色 + 粗体/斜体、下划线等
// 创建一个新的 color 对象,然后加上 “下划线” 样式 c := color.New(color.FgCyan).Add(color.Underline) // 下划线 c.Println("Prints cyan text with an underline.") // 创建一个新的 color 对象,颜色为 FgCyan,字体为粗体 d := color.New(color.FgCyan, color.Bold) // 粗体 d.Printf("This prints bold cyan %s\n", "too!.") // 创建一个颜色为 FgRed 的 color 对象 red := color.New(color.FgRed) // 在这个颜色为 FgRed 的 color 对象的基础上,加上 “粗体” 的样式 boldRed := red.Add(color.Bold) // 红色 + 粗体 boldRed.Println("This will print text in bold red.") // 在 红色 + 粗体 的 color 对象的基础上,加上 “白色背景” 的样式 whiteBackground := red.Add(color.BgWhite) // 红色 + 粗体 + 白色背景 whiteBackground.Println("Red text with white background.")
效果:
- 使用自定义的输出方向(实现了
io.Writer
即可):比如文件等
// 使用自定义的 `io.Writer` 保存 color 的输出 color.New(color.FgBlue).Fprintln(myWriter, "blue color!") blue := color.New(color.FgBlue) blue.Fprint(writer, "This will print text in blue.")
- 自定义
print
函数:PrintFunc
// 创建一个新的自定义的 print 函数 red := color.New(color.FgRed).PrintfFunc() red("Warning") red("Error: %s", err) // 创建自定义打印函数,并且添加 粗体 + 绿色 样式 notice := color.New(color.Bold, color.FgGreen).PrintlnFunc() notice("Don't forget this...")
- 自定义
fprint
函数:FprintFunc
// 创建一个自定义的 fprint 函数 blue := color.New(color.FgBlue).FprintfFunc() blue(myWriter, "important notice: %s", stars) // 创建一个自定义的 fprint 函数,并且 粗体 + 绿色 字体 success := color.New(color.Bold, color.FgGreen).FprintlnFunc() success(myWriter, "Don't forget this...")
- 无颜色字符串里面穿插有颜色的字符串
// SprintFunc 调用的效果是返回一个字符串,而不是直接输出了 yellow := color.New(color.FgYellow).SprintFunc() red := color.New(color.FgRed).SprintFunc() fmt.Printf("This is a %s and this is %s.\n", yellow("warning"), red("error")) info := color.New(color.FgWhite, color.BgGreen).SprintFunc() fmt.Printf("This %s rocks!\n", info("package")) // 也可以直接使用 helper 函数 fmt.Println("This", color.RedString("warning"), "should be not neglected.") fmt.Printf("%v %v\n", color.GreenString("Info:"), "an important message.") // windows 也支持 fmt.Fprintf(color.Output, "Windows support: %s", color.GreenString("PASS"))
- 在现有的代码上使用
// 在 `color.Set()` 和 `color.Unset()` 之间的代码会有颜色 color.Set(color.FgYellow) fmt.Println("Existing text will now be in yellow") fmt.Printf("This one %s\n", "too") color.Unset() // 需要手动调用 Unset,否则后续代码输出都会有颜色 // 也可以添加其他样式,这里加了 粗体 color.Set(color.FgMagenta, color.Bold) defer color.Unset() // 函数结束的时候 Unset fmt.Println("All text will now be bold magenta.")
禁用颜色
color.NoColor = true