当前位置: 首页 > article >正文

4-使用您自己的输出 --github_com_fatih_color测试

1.先读README.md文件

// Use your own io.Writer output
color.New(color.FgBlue).Fprintln(myWriter, "blue color!")

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

在这里插入图片描述

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.")
}

在这里插入图片描述

3.代码解读

a.main函数代码开始解读

// 这段Go代码的主要功能是使用color包来输出带有颜色的文本。具体步骤如下:

1.定义一个myWriter变量,将其设置为标准输出os.Stdout。
2.使用color.New(color.FgBlue)创建一个蓝色前景色的颜色对象,并通过Fprintln方法在myWriter上输出蓝色的文本"blue color!"3.创建一个名为blue的color.Color对象,设置其前景色为蓝色。
4.使用blue.Fprint方法在myWriter上输出蓝色的文本"This will print text in blue."// 按住ctrl键,点击 Fprintln 函数代码

在这里插入图片描述

b.查看函数 Fprintln

// 这段Go代码定义了一个名为 Fprintln 的方法,该方法属于 Color 结构体。方法的功能是将传入的参数格式化为字符串,并应用颜色包装后,写入指定的 io.Writer 对象。具体步骤如下:

1. 调用 sprintln 函数将所有参数 a 格式化为一个字符串。
2. 使用 c.wrap 方法对格式化后的字符串进行颜色包装。
3. 将包装后的字符串通过 fmt.Fprintln 写入 io.Writer 对象 w。
4. 返回 fmt.Fprintln 的结果,即写入的字符数和可能的错误。

// 在这里,Fprintln方法在myWriter上输出蓝色的文本"blue color!"。

在这里插入图片描述

c.查看函数 sprintln

// 这段Go代码定义了一个名为 sprintln 的函数,它接受任意数量的参数,并将这些参数转换为字符串后拼接在一起,最后去除结果字符串末尾的换行符 \n。

在这里插入图片描述

d.查看函数 Fprint

// 这段Go代码定义了一个名为 Fprint 的方法,属于 Color 结构体。该方法的功能是将传入的参数格式化后输出到指定的 io.Writer 中。具体步骤如下:

1. 将传入的 io.Writer 设置为当前颜色对象的写入器。
2. 使用 defer 确保在方法结束时取消设置的写入器。
3. 调用 fmt.Fprint 方法将参数格式化并写入到指定的 io.Writer 中,返回写入的字节数和可能的错误。

在这里插入图片描述

e.查看函数 SetWriter

// 这段Go代码定义了一个名为 SetWriter 的方法,用于设置颜色输出的写入器。具体功能如下:

1. 检查当前颜色是否已经禁用颜色输出,如果是,则直接返回当前对象。
2. 如果颜色输出未禁用,则将格式化后的颜色信息输出到指定的写入器。
3. 最后返回当前对象,以便支持链式调用。

// 代码实质就是输出字符前加样式命令 “\1b[ 样式 m”

在这里插入图片描述

f.查看函数 UnsetWriter

// 这段Go代码定义了一个名为 UnsetWriter 的方法,用于取消设置颜色输出。具体功能如下:

1. 检查 isNoColorSet 方法的返回值,如果为真,则直接返回。
2. 检查全局变量 NoColor 是否为真,如果为真,则直接返回。
3. 使用 fmt.Fprintf 向指定的 io.Writer 写入重置颜色的控制字符。

// 代码实质就是输出字符后加重置命令 “\1b[0m”

在这里插入图片描述


http://www.kler.cn/a/408235.html

相关文章:

  • 2024年Android面试总结
  • Android开发实战班 -网络编程 - Retrofit 网络请求 + OkHttp 使用详解
  • Spring 小案例体验创建对象的快感(Java EE 学习笔记05)
  • 【大数据测试ETL:从0-1实战详细教程】
  • Python爬虫:深入探索1688关键词接口获取之道
  • SpringMVC-Day1
  • 图像处理算法识别手势
  • OCR-free Document Understanding Transformer
  • 【django】扩展
  • TCP为什么需要三次握手?两次握手或四次握手可以吗?
  • LeetCode 904.水果成篮
  • YOLOv10改进,YOLOv10添加KANConv卷积,CVPR2024
  • Spring Boot OA:打造现代化企业办公环境
  • Web 端语音对话 AI 示例:使用 Whisper 和 llama.cpp 构建语音聊天机器人
  • 4.1_未授权漏洞
  • DataGrip 连接 Redis、TongRDS
  • 【FPGA-MicroBlaze】串口收发以及相关函数讲解
  • docker搭建私有的仓库
  • Python和R基因组及蛋白质组学和代谢组学
  • Java技术分享