Golang标准库学习 - strconv
strconv主要用于字符串和基本数据类型之间转换,练习一下常用到的方法来加深记忆。
字符串和整型之间的转换
字符串转为整型
1 | func ParseInt(s string, base int, bitSize int) (i int64, err error) |
参数 base 代表字符串按照给定的进制进行解释。一般的,base 的取值为 2~36,如果 base 的值为 0,则会根据字符串的前缀来确定 base 的值:”0x” 表示 16 进制; “0” 表示 8 进制;否则就是 10 进制。
参数 bitSize 表示的是整数取值范围,或者说整数的具体类型。取值 0、8、16、32 和 64 分别代表 int、int8、int16、int32 和 int64。
Atoi
是 ParseInt
的便捷版,内部通过调用 ParseInt(s, 10, 0)
来实现的
主要来看一下ParseInt的使用
1 | // 把字符串s转换为int8类型的整数 |
函数返回的是int64的类型,这是为了能够容纳所有的整型,在实际使用中,可以根据传递的 bitSize,然后将结果转为实际需要的类型。
只要是传入的base和bitSize是匹配的并且err为nil,转换为bitSize的类型就是没有问题的。如果字符串表示的整数超过了 bitSize 参数能够表示的范围,则会返回 ErrRange,同时会返回 bitSize 能够表示的最大或最小值。
1 | // 把字符串s转换为int8类型的整数(int8最大可表示整数为127) |
整型转为字符串
1 | func FormatUint(i uint64, base int) string // 无符号整型转字符串 |
1 | i := 1289 |
还有另外的方法
1 | fmt.Sprintf("%d", 127) |
Sprintf性能要差一些,因为它接收的是 interface,需要进行反射等操作,所以建议使用 strconv 包中的方法进行转换。
字符串和布尔值之间的转换
1 | // 接受 1, t, T, TRUE, true, True, 0, f, F, FALSE, false, False 等字符串; |