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

news2024/9/21 17:46:56

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

文章目录

    • 如何解决大模型的「幻觉」问题?
      • 前言
      • 几种库
        • 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 main

import (
	"image"
	"image/color"
	"image/png"
	"os"
)

func main() {
	// 创建一个 RGBA 图像,大小为 100x100
	img := 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 main

import (
	"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 main

import (
	"fmt"
	"math"
)

func main() {
	x := 2.5
	y := 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.coloradmin.cn/o/1369714.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系列十四、while do...while switch模板代码

一、while & do...while & switch模板代码 1.1、while /*** 需求&#xff1a;使用while循环打印5遍Hello World!*/ Test public void print5() {int i 1;while (i < 5) {System.out.println("Hello World! " LocalDateTime.now());// 线程休眠&#x…

最新最简操作系统期末复习(考前速过)

操作系统复习 第一章&#xff08;操作系统引论&#xff09;计算机操作系统包括&#xff1a;操作系统的目标&#xff1a;操作系统的作用&#xff1a;未配置操作系统的计算机系统&#xff1a;单道批处理系统&#xff1a;缺点&#xff1a; 多道批处理系统&#xff1a;优点&#xf…

力扣——C语言:合并两个有序数组

88. 合并两个有序数组 - 力扣&#xff08;LeetCode&#xff09; 这道题有多种方法可以解决 一、暴力求解 这种方法最简单&#xff0c;我们只需要把两个数组合在一起然后在冒泡排序就可以了 代码如下&#xff1a; void merge(int* nums1, int nums1Size, int m, int* nums2…

word技巧

word这个东西有的时候令人又爱又恨&#xff0c;很多用上的时候都是因为自己贫瘠的技巧而令人抓狂&#xff0c;比如设置一个页脚和页眉&#xff0c;首页如何不同&#xff1f;目录页如何设置罗马数字&#xff1f;页眉前面几页不要横线&#xff0c;后面几页要横线&#xff0c;谨以…

Python+requests搭建接口自动化测试框架

一、接口自动化的意义&#xff08;为什么做这个框架&#xff09; 新版本上线时之前版本的功能需要进行回归测试&#xff0c;导致大量的重复性手工测试。引入自动化测试可以使用自动化技术代替部分手工的回归性测试&#xff0c;解放更多人力做其它更有必要的事情。但目前项目UI变…

antv/x6_2.0学习使用(五、路由)

X6 默认提供了以下几种路由: 路由名称说明normal默认路由&#xff0c;原样返回路径点orth正交路由&#xff0c;由水平或垂直的正交线段组成oneSide受限正交路由&#xff0c;由受限的三段水平或垂直的正交线段组成manhattan智能正交路由&#xff0c;由水平或垂直的正交线段组成…

机器学习-线性回归实践

目标&#xff1a;使用Sklearn、numpy模块实现展现数据预处理、线性拟合、得到拟合模型&#xff0c;展现预测值与目标值&#xff0c;展现梯度下降&#xff1b; 一、导入模块 import numpy as np np.set_printoptions(precision2) from sklearn.linear_model import LinearRegr…

使用Pipeline和ColumnTransformer提升机器学习代码质量

机器学习项目中最冗长的步骤通常是数据清洗和预处理&#xff0c;Scikit-learn库中的Pipeline和 and ColumnTransformer通过一次封装替代逐步运行transformation步骤&#xff0c;从而减少冗余代码量。 1. Pipeline vs. ColumnTransformer 训练模型前&#xff0c;需要将数据集分…

windows系统如何查看扇区?

windows系统如何查看扇区&#xff1f; 首先&#xff0c;我们按WindowsR 弹出"运行"对话框&#xff0c;打开文本框输入"MSINFO32.EXE"命令 展开左侧"组件"节点 接下来&#xff0c;我们选择"组件|存储|磁盘"文件夹 在其里面即可查看硬盘…

PostGIS学习教程二十:3-D

PostGIS学习教程二十&#xff1a;3-D 注意&#xff1a;本文介绍许多PostGIS2.0及更高版本才支持的功能。 文章目录 PostGIS学习教程二十&#xff1a;3-D一、3-D几何图形二、3-D函数三、N-D索引 一、3-D几何图形 到目前为止&#xff0c;我们一直在处理2-D几何图形&#xff08;…

【Redis】非关系型数据库之Redis的主从复制、哨兵和集群高可用

目录 一、主从复制、哨兵、集群的区别 二、主从复制 2.1主从复制的作用 2.2主从复制的原理 2.3主从复制的实操 步骤一&#xff1a;环境准备 步骤二&#xff1a;安装Redis以及配置文件修改 Redis的主从配置文件都一样 步骤四&#xff1a;验证主从复制 三、哨兵 3.1哨兵…

盘点:最适合布偶猫的三款主食冻干,K9、sc、希喂,你选对了吗?

喂养布偶猫的秘诀&#xff1a;如何满足其食肉天性同时呵护其肠胃&#xff1f;主食冻干来解答&#xff01;它不仅符合猫咪天然的饮食结构&#xff0c;还采用新鲜生肉为原料。搭配其他营养元素&#xff0c;既美味又营养&#xff0c;还能增强抵抗力。我们将为您测评市场上热门的k9…

【Docker】Docker基础

文章目录 安装使用帮助启动命令镜像命令容器命令 安装 # 卸载旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine # 设置存储库 sudo yum install -y yum-utils …

浅析内存一致性:内存屏障

文章目录 概述内存乱序访问Store Buffer和Invalidate QueueStore BufferStore ForwardingStore Buffer与内存屏障 Invalidate QueueInvalidate Queue与内存屏障 内存屏障分类编译器屏障CPU内存屏障 相关参考 概述 内存屏障&#xff0c;是一类同步屏障指令&#xff0c;是CPU或编…

《数据结构、算法与应用C++语言描述》-红黑树的C++实现-百万级数据量测试通过

红黑树 完整可编译运行代码见仓库&#xff1a;GitHub - Jasmine-up/Data-Structures-Algorithms-and-Applications/_3matrix。 如有问题请在评论区指出。另外&#xff0c;Github仓库会根据我的学习情况持续更新&#xff0c;欢迎大家点star&#xff0c;谢谢。 基本概念 红-黑…

【mars3d】new mars3d.layer.GeoJsonLayer(实现环状面应该怎么传data

问题&#xff1a;【mars3d】new mars3d.layer.GeoJsonLayer(实现环状面应该怎么传data 解决方案&#xff1a; 1.在示例中修改showDraw()方法的data数据&#xff0c;实现以下环状面效果 2.示例链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 export f…

Avalonia学习(二十一)-自定义界面演示

今天开始继续Avalonia练习。 本节&#xff1a;自定义界面 在网上看见一个博客&#xff0c;根据需要演示一下。 前台代码 <Window xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"xmlns:vm"using:…

python画房子

前言 今天&#xff0c;我们来用Python画房子。 一、第一种 第一种比较简单。 代码&#xff1a; import turtle as t import timedef go(x, y):t.penup()t.goto(x, y)t.pendown() def rangle(h,w):t.left(180)t.forward(h)t.right(90)t.forward(w)t.left(-90)t.forward(h) de…

解决Qt Creator中文乱码的问题

方法1 使用QStringLiteral()包裹中文字符串 QString str1"中文测试&#xff01;"; QString str2QStringLiteral("中文测试&#xff01;");方法2 #if _MSC_VER > 1600//MSVC2015>1899,MSVC_VER14.0 #pragma execution_character_set("utf-8&qu…

Java里的实用类

1.枚举 语法&#xff1a; public enum 变量名{ 值一&#xff0c;值二} 某个变量的取值范围只能是有限个数的值时&#xff0c;就可以把这个变量定义成枚举类型。 2…装箱&#xff08;boxing&#xff09; 和拆箱&#xff08;unboxing&#xff09; 装箱&#xff08;boxing&…