1.先读README.md文件

// Create a new color object
c := color.New(color.FgCyan).Add(color.Underline)
c.Println("Prints cyan text with an underline.")

// Or just add them to New()
d := color.New(color.FgCyan, color.Bold)
d.Printf("This prints bold cyan %s\n", "too!.")

// Mix up foreground and background colors, create new mixes!
red := color.New(color.FgRed)

boldRed := red.Add(color.Bold)
boldRed.Println("This will print text in bold red.")

whiteBackground := red.Add(color.BgWhite)
whiteBackground.Println("Red text with white background.")

// Mix with RGB color codes
color.RGB(255, 128, 0).AddBgRGB(0, 0, 0).Println("orange with black background")

color.BgRGB(255, 128, 0).AddRGB(255, 255, 255).Println("orange background with white foreground")

1.jpg

2.实例测试

package main

import (
	"os"

	"github.com/fatih/color"
)

func main() {
	myWriter := os.Stdout
	// Use your own io.Writer output
	color.New(color.FgBlue).Fprintln(myWriter, "blue color!")

	blue := color.New(color.FgBlue)
	blue.Fprint(myWriter, "This will print text in blue.n")
}

2.jpg

3.代码解读

a.从几条代码开始解读

	// Create a new color object
	c := color.New(color.FgCyan).Add(color.Underline)
	c.Println("Prints cyan text with an underline.")

// 按住ctrl键,点击 New 函数代码

3.jpg

b.查看函数 New

// New返回新创建的颜色对象。
1.创建一个 Color 实例 c,并初始化其 params 字段为空的 Attribute 切片。
2.检查是否没有颜色设置(通过 noColorIsSet() 函数),如果是,则将 c 的 noColor 字段设置为 true。
3.使用 Add 方法将传入的 value 参数添加到 c 的 params 中。
4.返回创建的 Color 实例 c。

// 在这里,将FgCyan增加到params

4.jpg

c.查看函数 Add

// 该函数的功能是为 `Color` 结构体添加属性。具体功能如下:
1. 接收一个可变参数 `value`,类型为 `Attribute` 切片。
2. 将 `value` 中的所有元素追加到 `Color` 结构体的 `params` 字段中。
3. 返回当前 `Color` 实例的指针,以便支持链式调用。

// 下面代码,将color.Underline增加到params切片中

5.jpg

d.查看函数 Println

// 该函数功能是将传入的参数以指定颜色输出到指定的输出流。具体步骤如下:
1.使用 sprintln 函数将传入的参数转换为字符串。
2.调用 c.wrap 方法对字符串进行颜色包装。
3.使用 fmt.Fprintln 将包装后的字符串输出到 Output 指定的输出流,并返回写入的字节数和可能的错误。

// color的params是什么,输出的字符样式就是什么。

6.jpg

e.查看函数 AddBgRGB 和 AddRGB

// AddBgRGB 和 AddRGB:
1. AddBGB 函数是以RGB的方式,给color增加前景色(字符颜色)数据
2. AddBgRGB 函数是以RGB的方式,给color增加背景色数据
// 读懂代码就可以灵活应用

7.jpg