耐心和持久胜过激烈和*。
哈喽大家好,我是陈明勇,今天分享的知识是 Go 标准库 —— strconv。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!
前言
上篇文章 一文了解 Go 标准库 strings 常用函数和方法 介绍了 strings
标注库里的一些常用的函数和方法,本文也是以 string
类型为中心,通过 strconv
标准库,介绍其与其他基本数据类型相互转换的函数。
strconv
strconv
包提供了 string
类型与其他基本数据类型之间转换的函数,本文不会介绍其所有函数,如果有想了解更多的小伙伴可以到 Go 包文档 查看。
string 与 int 之间的转换
Itoa:int 类型转 string 类型
Itoa(i int) string
- 函数的参数为待转换的数字
- 函数的返回值为转换之后的字符串
Atoi:string 类型转 int 类型
Atoi(s string) (int, error)
- 函数的参数为待转换的字符串
- 返回值有两个,第一个是转换之后的整形数字,第二个是错误描述。
此函数与 Itoa
函数相比,多了一个 error
返回值,是因为如果是传入的字符串无法转成数字,例如 1a1
,此函数就会返回 NumError
错误,而 Itoa
函数,无论传入的是什么样的数字,都可以转为 string
,因此在转换的过程中没有 error
的说法。
FormatInt:将数字转成指定进制数并以 string 类型返回
FormatInt(i int64, base int) string
- 第一个参数为指定数字,类型为
int64
- 第二个参数为指定进制
- 第三个参数为数字转成指定进制数后的字符串
上述代码实现了将数字 2
转成二进制的形式 10
,将数字 17
转成十六进制的形式 11
,并以 string 类型返回。上述数字皆代表着有符号为的 int64
类型,与之对应的还有无符号位的 uint64
类型的转换函数 FormatUint
。
ParseInt:给定基数(进制数)和位数,返回对应十进制的值
ParseInt(s string, base int, bitSize int) (i int64, err error)
- 第一个参数
s
为待解析的字符串 - 第二个参数
base
为基数,也就是进制数,从 0
、2
到 36
进制。 - 第三个参数
bitSize
为位数,0
、8
、16
、32
、64
位分别对应 int
、int8
、int16
、int32
、int64
。如果 bitSize
小于 0
或大于 64
,则返回错误。 - 第一个返回值
i
为转换之后的数字 - 第二个返回值
err
为转换时产生的错误信息,除了 bitSize
小于 0
或大于 64
,会发生错误以外,如果所传的字符串 s
与 base
参数或 bitSize
参数不匹配,也会发生错误。
首先将二进制的 100
转成十进制,为 4
,然后将二进制的 666
转成十进制,但是二进制所对应的数字没有 666,因此转换错误,返回 strconv.ParseInt: parsing "666": invalid syntax
错误信息。与之对应的还有返回无符号位的 uint64
类型的转换函数 ParseUint
。
string 与 float 之间的转换
ParseFloat:字符串类型转浮点型类型
ParseFloat(s string, bitSize int) (float64, error)
- 第一个参数
s
为带转换的字符串。 - 第二个参数为
bitSize
为转换后的位数,32
代表 float32
,64
代表 float64
。 - 第一个返回值为转换后的浮点型数字。
- 第二个返回值为转换过程中所产生的错误
如果传入的 s
的语法错误如 1s1
,则转换失败,返回 error
。
FormatFloat:根据格式 fmt 和精度 prec 将浮点数 f 转换为字符串
FormatFloat(f float64, fmt byte, prec, bitSize int) string
- 第一个参数
f
为待转换的浮点数。 - 第二个参数为格式,可选值有
b e E f g G x X
。 - 第三个参数
prec
为精度,精确到几位小数。 - 返回值为转换后的字符串。
FormatFloat
函数会对结果值进行四舍五入计算。
string 与 bool 之间的转换
ParseBool:字符串转布尔值
ParseBool(str string) (bool, error)
- 第一个参数
str
为待转换的字符串 - 第一个返回值为转换之后的
bool
值 - 第二个返回值为转换时所产生的错误。
第一个字符串 true
转布尔值成功了,但是第二个字符串 golang
转布尔值失败了,因为 bool
类型的可选值只有 true
和 false
,其他值无法转成布尔值。
FormatBool:布尔值转字符串
FormatBool(b bool) string
- 参数
b
为带转换的布尔值。 - 返回值为转换之后的字符串。
小结
本文对 string
与 int
类型、float
类型和 bool
类型相互之间转换的函数进行介绍,掌握这些函数的用法,应对开发中 string
类型与其他基本数据类型转换的场景不成问题。