1.先读README.md文件
color.RGB(255, 128, 0).Println("foreground orange")
color.RGB(230, 42, 42).Println("foreground red")
color.BgRGB(255, 128, 0).Println("background orange")
color.BgRGB(230, 42, 42).Println("background red")

2.实例测试
/main.go
package main
import (
"github.com/fatih/color"
)
func main() {
color.RGB(255, 128, 0).Println("foreground orange")
color.RGB(230, 42, 42).Println("foreground red")
color.BgRGB(255, 128, 0).Println("background orange")
color.BgRGB(230, 42, 42).Println("background red")
}

3.代码解读
a.从一条代码开始解读
color.RGB(255, 128, 0).Println("foreground orange")

b.查看color库中的 RGB 函数代码

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

d.查看函数 Add
1. 接收一个可变参数 `value`,类型为 `Attribute` 切片。
2. 将 `value` 中的所有元素追加到 `Color` 结构体的 `params` 字段中。
3. 返回当前 `Color` 实例的指针,以便支持链式调用。

e.查看函数 Println
1.使用 sprintln 函数将传入的参数转换为字符串。
2.调用 c.wrap 方法对字符串进行颜色包装。
3.使用 fmt.Fprintln 将包装后的字符串输出到 Output 指定的输出流,并返回写入的字节数和可能的错误。

f.查看函数 wrap
1. 如果颜色设置未启用(通过 `isNoColorSet` 方法判断),则直接返回输入字符串 `s`。
2. 否则,返回格式化后的字符串,即在 `s` 前后分别添加颜色格式和取消颜色格式的控制字符(通过 `format` 和 `unformat` 方法获取)。

g.查看函数 isNoColorSet
1. 首先检查 `c.noColor` 是否不为空,如果不为空则返回其布尔值。
2. 如果 `c.noColor` 为空,则返回全局变量 `NoColor` 的值,默认情况下 `NoColor` 是禁用的(即为 `false`)。

h.查看函数 BgRGB
它接受三个整数参数 `r`、`g` 和 `b`,分别代表红色、绿色和蓝色的值,然后调用 `New` 函数,传入 `background`、`2` 以及将 `r`、`g`、`b` 转换为 `Attribute` 类型的参数,返回一个指向 `Color` 结构体的指针。
BgRGB传入背景色,RGB传入前景色
