当前位置: 技术文章>> 100道Go语言面试题之-请解释Go语言的strconv包中的字符串与数字相互转换的函数。
文章标题:100道Go语言面试题之-请解释Go语言的strconv包中的字符串与数字相互转换的函数。
在Go语言中,`strconv`包提供了字符串与其他基本数据类型之间的转换功能,特别是字符串与数字(整数、浮点数等)之间的转换。以下是`strconv`包中一些常用的字符串与数字相互转换的函数及其简要说明:
### 字符串转整数
- `strconv.Atoi(s string) (int, error)`:尝试将字符串`s`转换为十进制整数。如果转换成功,则返回转换后的整数和`nil`错误;如果转换失败,则返回`0`和一个非`nil`的错误。
- `strconv.ParseInt(s string, base int, bitSize int) (i int64, err error)`:将字符串`s`按照指定的进制`base`(范围2到36)解析为整数,并根据`bitSize`(0、8、16、32、64)返回合适大小的整数(`int64`类型)。如果`bitSize`是0,则根据转换的数值大小自动选择合适的类型。
- `strconv.ParseUint(s string, base int, bitSize int) (n uint64, err error)`:功能与`ParseInt`类似,但返回的是无符号整数(`uint64`类型)。
### 整数转字符串
- `strconv.Itoa(i int) string`:将整数`i`转换为字符串表示。这个函数只支持`int`类型的转换,对于其他整数类型(如`int64`),需要使用`FormatInt`函数。
- `strconv.FormatInt(i int64, base int) string`:将整数`i`以指定的进制`base`(范围2到36)转换为字符串。这个函数适用于所有整数类型,通过传递`int64`类型的参数可以覆盖`int`、`int32`、`int16`、`int8`等类型的转换。
- `strconv.FormatUint(i uint64, base int) string`:与`FormatInt`类似,但用于无符号整数(`uint64`)的转换。
### 字符串转浮点数
- `strconv.ParseFloat(s string, bitSize int) (f float64, err error)`:将字符串`s`转换为浮点数。`bitSize`指定了期望的精度(32或64),但它实际上只是指定了返回的浮点数类型(`float32`或`float64`)。函数总是返回`float64`类型的值,如果`bitSize`是32,则调用者需要将其转换为`float32`。
### 浮点数转字符串
- `strconv.FormatFloat(f float64, fmt byte, prec, bitSize int) string`:将浮点数`f`转换为字符串。`fmt`参数指定了格式化类型(如`'f'`表示固定小数点数表示,`'e'`表示科学计数法),`prec`是精度(小数点后的位数),`bitSize`指定了原始浮点数的类型(32或64),虽然它主要用于确定`f`是否应该被四舍五入到其原始类型的精度。
这些函数在处理文本数据和数字数据之间的转换时非常有用,特别是在需要解析用户输入或生成文本输出时。