strconv包
strconv
包主要包括进行数值类型和字符串/字节数组进行转换的函数,还有部分给字符(串)添加引用的函数。
主要是对官网文档的总结和翻译。
官网:https://pkg.go.dev/[email protected]
每篇一首歌
常量
1 | const IntSize = intSize |
表示Int类型的字节长度,32位平台为4,64位平台为8.
变量
1 | var ErrRange = errors.New("value out of range") |
函数
最常用的:整型转字符串(itoa)、字符串转整型(atoi)
1 | func Atoi(s string) (int, error) |
Atoi将(十进制)字符串转化为整型(int),Itoa将整型转化为字符串。
数值类型格式化为字符串
1 | // bool类型转化为字符串,返回值为true或者false |
需要注意的是,这组函数的参数都是各种类型中位宽最大的类型。
FormatFloat()
函数是这组函数中最复杂的,其各字段意义如下:
fmt
,表示浮点数格式化的形式,可选的形式如下:- ‘b’. -ddddp±ddd 二进制指数表示形式
- ‘e’. -d.dddde±dd 十进制指数表示形式,也就是常说的“科学计数法”
- ‘E’. -d.ddddE±dd 十进制指数表示形式
- ‘f’. -ddd.dddd 十进制,没有指数
- ‘g’. 对于大数表示为’e’的形式,其他表示为’f’的形式
- ‘G’. 对于大数表示为’E’的形式,其他表示为’f’的形式
- ‘x’. -0xd.ddddp±ddd 十六进制小数和二进制指数
- ‘X’. -0Xd.ddddP±ddd 十六进制小数和二进制指数
我觉得’f’和’g’应该是最常用的。
pre
控制 ‘e’, ‘E’, ‘f’, ‘g’, ‘G’, ‘x’, ‘X’ 打印的位数,对于:- ‘e’, ‘E’, ‘f’, ‘x’, ‘X’:小数点后面的位数
- ‘g’, ‘G’:最大有效位数,后面的0被忽略。
如果pre
被设置为-1,则表示ParseFloat
能返回准确的f所需要的精度,我觉得这是最常用的。
bitSize
,表示位宽,32或64.
将字符串转化为数值类型
1 | // 将字符串转化为bool值, |
将格式化后的字符串添加到[]byte后面
1 | func AppendBool(dst []byte, b bool) []byte |
这部分函数与Format
系列的函数相似,只不过是将转化后的结果添加都一个[]byte后面。
反引号相关的
1 | func CanBackquote(s string) bool |
该函数返回字符串s能否表示为一个 单行的 、 不包含除了空格和制表符之外的特殊字符的 反引号引用的 字符串。
说实话我不知道这个函数有什么用。
辅助函数
1 | // 判断r是不是被unicode定义为图片,包括:字母、标记、数字、标点符号、符号和空白字符。 |
用于辅助其他函数,但导出了,感觉不应该出现在这个包里。
给字符/字符串添加引用/去掉引用
1 | // 返回Go双引号引用的 Go字面量表示的 字符串s。对于控制字符和不可打印的字符(!IsPrint), |
UnquoteChar()
函数的官网解释:
UnquoteChar decodes the first character or byte in the escaped string or character literal represented by the string s. It returns four values:
- value, the decoded Unicode code point or byte value;
- multibyte, a boolean indicating whether the decoded character requires a multibyte UTF-8 representation;
- tail, the remainder of the string after the character; and
- an error that will be nil if the character is syntactically valid.
The second argument, quote, specifies the type of literal being parsed and therefore which escaped quote character is permitted. If set to a single quote, it permits the sequence ' and disallows unescaped ‘. If set to a double quote, it permits " and disallows unescaped “. If set to zero, it does not permit either escape and allows both quote characters to appear unescaped.
类型
NumError
1 | type NumError struct { |
将字符串转化为数值类型时,返回的错误时真实的类型为NumError。
1 | str := "Not a number" |
成员函数:
1 | func (e *NumError) Error() string |