Golang-strconv库学习笔记

前言:

strconv库是go官方提供的一个标准包,主要用于字符串相关的处理。通过参考官方文档、中文文档和其他工具,进行学习记录。学习重点是其中的内置方法。
本文分为AtoiFormat系列,Parse系列,Append系列,Quote系列进行学习。

AtoiItoa

这两个函数主要用于string和int类型的互转,算是个人而言用的比较多的。

int类型转换为string类型

var m int = 42
var n string = strconv.Itoa(m)

string类型转换为int类型:

var s string = "123"
var t int, err = strconv.Atoi(s)
if err != nil {// 处理错误
}

Format系列

Format系列主要是用于将各种类型转换为字符串类型。其系列一共有五种函数:

在这里插入图片描述

FormatBool()

b := true
str := strconv.FormatBool(b)
fmt.Println(str) // Output: "true"

FormatInt()

i := 42
str := strconv.FormatInt(int64(i), 10) // 10表示十进制
fmt.Println(str) // Output: "42"

FormatFloat()

f := 3.14159
str := strconv.FormatFloat(f, 'f', -1, 64) // 'f'表示普通浮点数格式,-1表示最小精度,64表示位数
fmt.Println(str) // Output: "3.14159"

FormatUint()

u := uint(42)
str := strconv.FormatUint(uint64(u), 10) // 10表示十进制
fmt.Println(str) // Output: "42"

FormatComplex()

c := complex(3, 4)
str := fmt.Sprintf("%f", real(c)) + "+" + fmt.Sprintf("%f", imag(c)) + "i"
fmt.Println(str) // Output: "3.000000+4.000000i"

Parse系列

Format系列相反,Parse系列主要是用于将字符串格式化为各种数据类型。
其系列一共有五种函数:
在这里插入图片描述

需要特别注意的是:Parse在使用时需要注意处理错误。比较转字符串没啥难度,但字符串不规范,就很难转成预期的形式了。

此部分就不写怎么用了,具体请见官方文档。

Append系列

Append系列主要有下图的方法。主要作用是将一个xx类型的参数,转换为byte之后再追加到一个[]byte之后。用途主要是需要使用到[]byte时,比如需要将我的数据转换为[]byte,输出到日志或发送json等。

在这里插入图片描述

这里拿AppendFloat函数举例:
其源码为


// AppendFloat appends the string form of the floating-point number f,
// as generated by FormatFloat, to dst and returns the extended buffer.
func AppendFloat(dst []byte, f float64, fmt byte, prec, bitSize int) []byte {return genericFtoa(dst, f, fmt, prec, bitSize)
}
// bigFtoa uses multiprecision computations to format a float.func genericFtoa(dst []byte, val float64, fmt byte, prec, bitSize int) []byte {//此部分太长了,因此省略。//具体代码见文档:ftoa.go,57行。//其主要实现了对数据的预处理//之后调用了formatDigits函数
}func formatDigits(dst []byte, shortest bool, neg bool, digs decimalSlice, prec int, fmt byte) []byte {
//见ftoa.go,199行。
//主要是进行判断调用后,	return append(dst, '%', fmt)追加到后方
}

使用示例:


func main() {var slice []byteslice = strconv.AppendFloat(slice, 3.14159, 'f', -1, 64) // 'f'表示普通浮点数格式,-1表示最小精度,64表示位数fmt.Println(slice)fmt.Println(string(slice)) // Output: "3.14159"
}

Queto系列

Queto系列主要有下图的方法。主要是用于处理字符串的引号转义等场景

在这里插入图片描述

例如Queto方法,该方法就是给字符串加一个双引号,在打日志等输出场景可能有用。

func main() {a := "你好,我是climber"s := strconv.Quote(a)fmt.Println(a)fmt.Println(s)
}

在这里插入图片描述

之后还有诸如QuoteToASCII()方法, 会对字符串中的非ASCII字符进行转义处理,确保生成的字符串是符合ASCII标准的。
QuoteRune() QuoteRuneToASCII():用于将 Unicode 字符转换为带单引号的字符串字面量表示形式。
QuoteRuneToGraphic():用于将 Unicode 字符转换为带双引号的可打印字符串字面量表示形式。
其余不再例举,具体见官方文档。

strconv官方文档

当然还是官方文档才是yyds…详细请见:

中文文档地址

https://pkg.go.dev/strconv

英文文档地址

https://pkg.go.dev/strconv

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319686.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机毕业设计】SSM二手交易网站

项目介绍 该项目分为前后台,前台普通用户角色,后台管理员角色。 管理员主要功能如下: 登陆,商品分类管理,商品管理,商品订单管理,用户管理等功能。 用户角色主要功能如下: 包含以下功能:查看所有商品,用户登陆注册…

Git(2):Git环境的安装

本教程里的git命令例子都是在Git Bash中演示的,会用到一些基本的linux命令,在此为大家提前列举: ls/ll 查看当前目录cat 查看文件内容touch 创建文件vi vi编辑器(使用vi编辑器是为了方便展示效果,学员可以记事本、edi…

Python内置类属性__module__属性的使用教程

概要 在Python中,每个对象都有一些内置的属性,这些属性提供了有关对象的一些信息。其中一个内置属性是__module__属性。__module__属性是一个字符串,它表示定义了类或函数的模块的名称。在本篇文章中,我们将详细介绍__module__属…

IDEA 控制台中文乱码问题解决方法(UTF-8 编码)

设置 IDEA 编码格式 1:打开 IntelliJ IDEA>File>Setting>Editor>File Encodings,将 Global Encoding、Project Encoding、Default encodeing for properties files 这三项都设置成 UTF-8 2:将 vm option 参数改为: -…

element中Table表格控件实现单选功能、多选功能、两种分页方式

目录 1、Table表格控件实现单选功能2、Table控件和Pagination控件实现多选和两种分页方式方法一&#xff1a;使用slice方法方法二&#xff1a;多次调用接口 1、Table表格控件实现单选功能 <template><div><!-- highlight-current-row 是否要高亮当前行 -->…

洁净室洁净度如何快速计算?附详细计算公式

关于洁净室洁净度概念 按空气中悬浮粒子浓度来划分洁净室及相关受控环境中空气洁净度等级&#xff0c;就是以每立方米空气中的最大允许粒子数来确定其空气洁净度等级。 几级洁净车间&#xff1a;指洁净级别&#xff0c;可以理解为无尘室&#xff0c;但是无尘室也是需要换气的…

输入输出流

1.输入输出流 输入/输出流类&#xff1a;iostream---------i input&#xff08;输入&#xff09; o output&#xff08;输出&#xff09; stream&#xff1a;流 iostream&#xff1a; istream类&#xff1a;输入流类-------------cin&#xff1a;输入流类的对象 ostream类…

现在的人们如何看待数据隐私?

PrimiHub一款由密码学专家团队打造的开源隐私计算平台&#xff0c;专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 在当前时代&#xff0c;每一次点击、触摸或按键都留下了数字痕迹。但是我们对自己的个人数据几乎没有控制的权限&#xff0c;这让…

智慧工厂:科技与制造融合创新之路

随着科技的迅猛发展&#xff0c;智慧工厂成为制造业领域的热门话题。智慧工厂利用先进的技术和智能化系统&#xff0c;以提高生产效率、降低成本、增强产品质量和灵活性为目标&#xff0c;正在引领着未来制造业的发展。 智慧工厂的核心是数字化和自动化生产&#xff0c;相较于传…

阿里面试:redis 为什么把简单的字符串设计成 SDS?

面试官&#xff1a;了解redis的String数据结构底层实现嘛? 铁子&#xff1a;当然知道&#xff0c;是基于SDS实现的 面试官&#xff1a;redis是用C语言开发的&#xff0c;那为啥不直接用C的字符串&#xff0c;还单独设计SDS这样的结构呢? 铁子&#xff1a; 我们知道redis是用C…

【计算机毕业设计】SSM健身房俱乐部管理系统

项目介绍 本项目包含前后台&#xff0c;分为普通用户与管理员两种角色&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 管理员角色包含以下功能&#xff1a; 登录,会员管理-增删改查,员工管理-增删改查,课程管理,网站新闻管理,新闻添加编辑,留言管…

运动蓝牙耳机哪个品牌好?2024年运动蓝牙耳机品牌排行榜

​对于那些追求健康生活方式的人来说&#xff0c;一副高质量的运动耳机是必不可少的装备。在跑步、骑行或做任何形式的锻炼时&#xff0c;优质的耳机不仅能提供动感的音乐&#xff0c;还能帮助你保持专注和动力。今天&#xff0c;我将向大家介绍一些市面上表现出色的运动耳机。…