【GoLang入门教程】Go语言几种标准库介绍(五)

news/2024/10/19 9:46:23/

如何解决大模型的「幻觉」问题?

文章目录

    • 如何解决大模型的「幻觉」问题?
      • 前言
      • 几种库
        • image库 (常见图形格式的访问及生成)
          • 关键概念和类型:
          • 示例
        • IO库
          • 示例
        • math库(数学库)
          • 常用的函数和常量:
          • 示例
      • 总结
      • 专栏集锦
      • 写在最后

579a429daf314744b995f37351b46548

前言

上一篇,我们介绍了fmt、Go、html 三个库,这篇我们继续介绍剩下的库


几种库

image库 (常见图形格式的访问及生成)

在 Go 语言的标准库中,image 包提供了对图像的基本操作和处理功能。

这个包定义了 Image 接口和一些基本的图像类型,同时也包含了一些实现了该接口的具体类型,如 image.RGBAimage.Gray

关键概念和类型:
  1. Image 接口: 定义了图像的基本操作,包括获取像素值、设置像素值等。
  2. RGBA 类型: 表示一个带有红、绿、蓝和透明度通道的图像。
  3. Gray 类型: 表示一个灰度图像。
  4. Image 接口的实现: 你可以自定义实现 Image 接口的类型,以表示不同的图像格式或处理逻辑。
示例

演示了如何使用 image 包创建一个简单的彩色图像,并将其保存为 PNG 文件:

package mainimport ("image""image/color""image/png""os"
)func main() {// 创建一个 RGBA 图像,大小为 100x100img := image.NewRGBA(image.Rect(0, 0, 100, 100))// 在图像上绘制一个红色的矩形drawRedRectangle(img)// 创建输出文件file, err := os.Create("output.png")if err != nil {panic(err)}defer file.Close()// 将图像保存为 PNG 文件err = png.Encode(file, img)if err != nil {panic(err)}
}// 在图像上绘制一个红色的矩形
func drawRedRectangle(img *image.RGBA) {red := color.RGBA{255, 0, 0, 255}for x := 20; x < 80; x++ {for y := 20; y < 80; y++ {img.Set(x, y, red)}}
}

在这个示例中,创建了一个大小为 100x100 像素的 RGBA 图像,然后在图像上通过自定义函数 drawRedRectangle 绘制了一个红色的矩形。最后,将图像保存为 PNG 文件。

这只是 image 包的一个简单用法示例,可以根据实际需求进行更复杂的图像

IO库

在 Go 语言的标准库中,io 包提供了输入输出的基本接口和一些实用函数,用于实现数据的读取和写入。

io 包中的接口和函数是为了在不同的 I/O 类型之间提供通用性和可组合性。

重要的接口和函数:

  1. Reader 接口: 定义了读取数据的基本方法,如 Read
  2. Writer 接口: 定义了写入数据的基本方法,如 Write
  3. Closer 接口: 定义了关闭资源的方法,如 Close
  4. ReadWriter 接口: 组合了 ReaderWriter 接口。
  5. ReadWriteCloser 接口: 组合了 ReaderWriterCloser 接口。
  6. ReadFullWriteStringCopy 等函数: 提供了一些便捷的读写操作。
示例
package mainimport ("bytes""fmt""io""os""strings"
)func main() {// 使用 Reader 接口从字符串中读取数据reader := strings.NewReader("Hello, Go IO!")buffer := make([]byte, 8)n, err := reader.Read(buffer)if err != nil && err != io.EOF {fmt.Println("Error reading:", err)return}fmt.Printf("Read %d bytes: %s\n", n, buffer[:n])// 使用 Writer 接口向缓冲区写入数据var writer bytes.Buffer_, err = writer.Write([]byte("Hello, Go IO Writer!"))if err != nil {fmt.Println("Error writing:", err)return}fmt.Println("Writer buffer:", writer.String())// 使用 ReadWriter 接口进行读写操作readWriter := bytes.NewBufferString("Initial Data")_, err = readWriter.Read(buffer)if err != nil {fmt.Println("Error reading:", err)return}fmt.Println("ReadWriter buffer after reading:", readWriter.String())_, err = readWriter.Write([]byte("Appended Data"))if err != nil {fmt.Println("Error writing:", err)return}fmt.Println("ReadWriter buffer after writing:", readWriter.String())// 使用 Copy 函数复制数据source := strings.NewReader("Source Data")destination := &bytes.Buffer{}copiedBytes, err := io.Copy(destination, source)if err != nil {fmt.Println("Error copying:", err)return}fmt.Printf("Copied %d bytes to destination: %s\n", copiedBytes, destination.String())// 使用 ReadFull 函数读取固定长度的数据fullReader := strings.NewReader("Full Data")fullBuffer := make([]byte, 4)_, err = io.ReadFull(fullReader, fullBuffer)if err != nil {fmt.Println("Error reading full:", err)return}fmt.Printf("ReadFull result: %s\n", fullBuffer)
}

在这个示例中,演示了如何使用 io 包中的 ReaderWriterReadWriter 接口以及一些便捷函数进行基本的输入输出操作。

这些接口和函数为不同类型的 I/O 操作提供了一致的接口,使得代码更具通用性。

math库(数学库)

在 Go 语言的标准库中,math 包提供了一系列数学操作的函数。

这个包包括了基本的数学运算,如加减乘除、取余、取整、指数运算,以及一些常见的数学函数,如三角函数、对数函数、指数函数等。

常用的函数和常量:
  1. 基本运算:
    • Add(x, y float64) float64:加法
    • Sub(x, y float64) float64:减法
    • Mul(x, y float64) float64:乘法
    • Div(x, y float64) float64:除法
    • Mod(x, y float64) float64:取余
    • Pow(x, y float64) float64:x 的 y 次方
  2. 取整和舍入:
    • Ceil(x float64) float64:向正无穷大方向取整
    • Floor(x float64) float64:向负无穷大方向取整
    • Round(x float64) float64:四舍五入
  3. 三角函数:
    • Sin(x float64) float64:正弦函数
    • Cos(x float64) float64:余弦函数
    • Tan(x float64) float64:正切函数
    • Asin(x float64) float64:反正弦函数
    • Acos(x float64) float64:反余弦函数
    • Atan(x float64) float64:反正切函数
    • Atan2(y, x float64) float64:返回 y/x 的反正切,以弧度表示
  4. 对数和指数函数:
    • Log(x float64) float64:自然对数
    • Log10(x float64) float64:以 10 为底的对数
    • Exp(x float64) float64:e 的 x 次方
    • Sqrt(x float64) float64:平方根
  5. 常量:
    • Pi:圆周率
    • E:自然对数的底
示例
package mainimport ("fmt""math"
)func main() {x := 2.5y := 3.0// 基本运算fmt.Printf("Add: %f\n", math.Add(x, y))fmt.Printf("Sub: %f\n", math.Sub(x, y))fmt.Printf("Mul: %f\n", math.Mul(x, y))fmt.Printf("Div: %f\n", math.Div(x, y))fmt.Printf("Mod: %f\n", math.Mod(x, y))fmt.Printf("Pow: %f\n", math.Pow(x, y))// 取整和舍入fmt.Printf("Ceil: %f\n", math.Ceil(x))fmt.Printf("Floor: %f\n", math.Floor(x))fmt.Printf("Round: %f\n", math.Round(x))// 三角函数fmt.Printf("Sin: %f\n", math.Sin(x))fmt.Printf("Cos: %f\n", math.Cos(x))fmt.Printf("Tan: %f\n", math.Tan(x))fmt.Printf("Asin: %f\n", math.Asin(x))fmt.Printf("Acos: %f\n", math.Acos(x))fmt.Printf("Atan: %f\n", math.Atan(x))fmt.Printf("Atan2: %f\n", math.Atan2(y, x))// 对数和指数函数fmt.Printf("Log: %f\n", math.Log(x))fmt.Printf("Log10: %f\n", math.Log10(x))fmt.Printf("Exp: %f\n", math.Exp(x))fmt.Printf("Sqrt: %f\n", math.Sqrt(x))// 常量fmt.Printf("Pi: %f\n", math.Pi)fmt.Printf("E: %f\n", math.E)
}

在这个示例中,使用了 math 包中的一些函数,执行了一些基本的数学运算。这些函数提供了丰富的数学操作,可以满足各种数学计算的需求。


总结

这里我们介绍了3个库image、io、math3个库, 下一篇我们将介绍其他的几种标准库


专栏集锦

大佬们可以收藏以备不时之需:

Spring Boot 专栏:http://t.csdnimg.cn/peKde

ChatGPT 专栏:http://t.csdnimg.cn/cU0na

Java 专栏:http://t.csdnimg.cn/YUz5e

Go 专栏:http://t.csdnimg.cn/Jfryo

Netty 专栏:http://t.csdnimg.cn/0Mp1H

Redis 专栏:http://t.csdnimg.cn/JuTue

Mysql 专栏:http://t.csdnimg.cn/p1zU9

架构之路 专栏:http://t.csdnimg.cn/bXAPS


写在最后

感谢您的支持和鼓励! 😊🙏

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot, spring cloud等系列文章,一系列干货随时送达!

csdn-end


http://www.ppmy.cn/news/1342389.html

相关文章

PFMEA的具体实施步骤都有哪些——FMEA软件免费

免费试用FMEA软件-免费版-SunFMEA 一、引言 PFMEA&#xff08;Process Failure Mode and Effects Analysis&#xff09;是一种用于识别、评估和优先处理生产过程中潜在失效模式的工具。它通过对生产过程中的各个环节进行深入分析&#xff0c;发现可能导致产品不合格、过程不稳…

开源软件:技术创新与应用的推动力量

文章目录 每日一句正能量前言开源软件如何推动技术创新开源软件的历史开源软件的开发模式开源软件与闭源软件源代码和开发许可维护特点、支持和成本开源软件的优势减少开支可定制性快速创新发展透明度和安全性 开源软件的应用 常见问题后记 每日一句正能量 不好等待运气降临&am…

Golang中的HTTP请求凝聚器

HTTP请求凝聚器是一种请求优化机制&#xff0c;它将多个HTTP请求合并为一个。通过将性质相似的请求归为较大的批次&#xff0c;我们可以减少不必要的网络流量&#xff0c;提高工作效率。 利用goroutines和通道&#xff0c;我们可以在Golang中创建一个HTTP请求凝聚器。goroutine…

记录一下怎么重装服务器

使用腾讯的镜像 https://market.cloud.tencent.com/products/35788 首先配置mysql 没有user表&#xff0c;怎么办。 首先创建一个能让外部连接的用户&#xff0c; GRANT ALL PRIVILEGES ON *.* TO myuser% IDENTIFIED BY mypassword WITH GRANT OPTION; 然后修改root密码…

【QT+QGIS跨平台编译】之二十三:【Proj+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、proj介绍二、文件下载三、文件分析四、pro文件五、编译实践一、proj介绍 PROJ(原名Proj.4)是一个开源的地理信息系统(GIS)软件库,用于执行地图投影和地理坐标转换。这个库提供了广泛的地图投影和坐标转换功能,使其成为处理地理空间数据时不可或缺的工具。P…

嵌入式中C 语言中的三块技术难点

C 语言在嵌入式学习中是必备的知识&#xff0c;甚至大部分操作系统都要围绕 C 语言进行&#xff0c;而其中有三块技术难点&#xff0c;几乎是公认级别的“难啃的硬骨头”。 今天就来带你将这三块硬骨头细细拆解开来&#xff0c;一定让你看明白了。 0x01 指针 指针是公认最难理…

【Android新版本兼容】onBackPressed()方法被弃用的解决方案

提示&#xff1a;此文章仅作为本人记录日常学习使用&#xff0c;若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、使用 AndroidX API 实现预测性返回手势1.1 添加依赖1.2 启用返回手势1.3 注册OnBackPressedCallback()方法来处理返回手势 一、使用 AndroidX API 实现预测…

2401cmake,学习cmake1

1步:一个基本出发点 项目最顶级CMakeLists.txt必须先使用cmake_minimum_required()命令指定最低CMake版本.这创建策略设置,并确保以下CMake函数使用兼容版本的CMake运行. 最基础项目是基于源码的一个可执行构建.对简单项目.三行CMakeLists.txt就满足了. 在步1路径下创建如下C…