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](https://s2.51cto.com/images/blog/front/202411/d1a3d572787f381d844370e42ffa29a99b08ec.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
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](https://s2.51cto.com/images/blog/front/202411/a88981b109b189b683b982c2dfb67dd327532d.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
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](https://s2.51cto.com/images/blog/front/202411/1867ada786bb7eca68b745c691e92a72f9b280.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
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](https://s2.51cto.com/images/blog/front/202411/25fc17a205fd4cd114118556842534e4e0664c.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
c.查看函数 Add
// 该函数的功能是为 `Color` 结构体添加属性。具体功能如下:
1. 接收一个可变参数 `value`,类型为 `Attribute` 切片。
2. 将 `value` 中的所有元素追加到 `Color` 结构体的 `params` 字段中。
3. 返回当前 `Color` 实例的指针,以便支持链式调用。
// 下面代码,将color.Underline增加到params切片中
![5.jpg](https://s2.51cto.com/images/blog/front/202411/d72b1202347006111f5929953d7ab6ba837c64.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
d.查看函数 Println
// 该函数功能是将传入的参数以指定颜色输出到指定的输出流。具体步骤如下:
1.使用 sprintln 函数将传入的参数转换为字符串。
2.调用 c.wrap 方法对字符串进行颜色包装。
3.使用 fmt.Fprintln 将包装后的字符串输出到 Output 指定的输出流,并返回写入的字节数和可能的错误。
// color的params是什么,输出的字符样式就是什么。
![6.jpg](https://s2.51cto.com/images/blog/front/202411/63138cc922da49a2797352c2116692ce779d2a.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
e.查看函数 AddBgRGB 和 AddRGB
// AddBgRGB 和 AddRGB:
1. AddBGB 函数是以RGB的方式,给color增加前景色(字符颜色)数据
2. AddBgRGB 函数是以RGB的方式,给color增加背景色数据
// 读懂代码就可以灵活应用
![7.jpg](https://s2.51cto.com/images/blog/front/202411/c59d96d373e5c4e68ea09583f20394d179a4a0.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)