一文了解 Go 标准库 strconv:string 与其他基本数据类型的转换
耐心和持久胜过激烈和狂热。
哈喽大家好,我是陈明勇,今天分享的知识是 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
类型与其他基本数据类型转换的场景。
版权声明: 本文为 InfoQ 作者【陈明勇】的原创文章。
原文链接:【http://xie.infoq.cn/article/8f94632de76e3ef67bfa2d640】。文章转载请联系作者。
评论