最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
golang语言strconv包使用例子
时间:2022-06-25 04:43:43 编辑:袖梨 来源:一聚教程网
golang strconv包提供了字符串和基本数据类型之间的转换操作。
1.默认提供了1个常量IntSize和两个变量ErrRange和ErrSyntax。
package main
import (
"strconv"
"fmt"
)
func main() {
//IntSize是int或uint类型的字位数。
fmt.Println(strconv.IntSize)
//ErrRange表示超出目标类型表示范围。[var ErrRange = errors.New("value out of range")]
fmt.Println(strconv.ErrRange)
//ErrSyntax表示不符合目标类型语法。[var ErrSyntax = errors.New("invalid syntax")]
fmt.Println(strconv.ErrSyntax)
}
2.字符串和整型相互转换
实现函数原型:
//字符串转换为整数
func ParseInt(s string, base int, bitSize int) (i int64, err error)
func ParseUint(s string, base int, bitSize int) (n uint64, err error)
func Atoi(s string) (i int, err error)
//整数转换为字符串
func FormatUint(i uint64, base int) string // 无符号整型转字符串
func FormatInt(i int64, base int) string // 有符号整型转字符串
func Itoa(i int) string
示例如下:
package main
import (
"strconv"
"fmt"
)
func main() {
//字符串转整型
v32 := "-354634382"
if s, err := strconv.ParseInt(v32, 10, 32); err == nil {
fmt.Println(s) //-354634382
}
if s, err := strconv.Atoi(v32); err == nil {
fmt.Println(s) //-354634382
}
//整型转字符串
v := int64(-42)
fmt.Println(strconv.FormatInt(v, 10)) // "-42"
i := 10
fmt.Println(strconv.Itoa(i)) // "10"
}
参数说明:
参数 base 代表字符串按照给定的进制进行解释。一般的,base 的取值为 2~36,如果 base 的值为 0,则会根据字符串的前缀来确定 base 的值:"0x" 表示 16 进制; "0" 表示 8 进制;否则就是 10 进制。
参数 bitSize 表示的是整数取值范围,或者说整数的具体类型。取值 0、8、16、32 和 64 分别代表 int、int8、int16、int32 和 int64。
3.字符串和布尔值相互转换
实现函数原型:
// ParseBool 将字符串转换为布尔值
// 它接受真值:1, t, T, TRUE, true, True
// 它接受假值:0, f, F, FALSE, false, False.
// 其它任何值都返回一个错误
func ParseBool(str string) (value bool, err error)
// FormatBool 将布尔值转换为字符串 "true" 或 "false"
func FormatBool(b bool) string
// AppendBool 将布尔值 b 转换为字符串 "true" 或 "false"
// 然后将结果追加到 dst 的尾部,返回追加后的 []byte
func AppendBool(dst []byte, b bool) []byte
示例如下:
package main
import (
"strconv"
"fmt"
)
func main() {
if b, err := strconv.ParseBool("T"); err == nil {
fmt.Println(b) //true
}
fmt.Println(strconv.FormatBool(0 > 1)) // "false"
rst := make([]byte, 0)
rst = strconv.AppendBool(rst, 0 < 1)
fmt.Printf("%sn", rst) // "true"
}
4.字符串和浮点数相互转换
实现函数原型:
// ParseFloat 将字符串转换为浮点数
// s:要转换的字符串
// bitSize:指定浮点类型(32:float32、64:float64)
// 如果 s 是合法的格式,而且接近一个浮点值,
// 则返回浮点数的四舍五入值(依据 IEEE754 的四舍五入标准)
// 如果 s 不是合法的格式,则返回“语法错误”
// 如果转换结果超出 bitSize 范围,则返回“超出范围”
func ParseFloat(s string, bitSize int) (f float64, err error)
// FormatFloat 将浮点数 f 转换为字符串值
// f:要转换的浮点数
// fmt:格式标记(b、e、E、f、g、G)
// prec:精度(数字部分的长度,不包括指数部分)
// bitSize:指定浮点类型(32:float32、64:float64)
//
// 格式标记:
// 'b' (-ddddp±ddd,二进制指数)
// 'e' (-d.dddde±dd,十进制指数)
// 'E' (-d.ddddE±dd,十进制指数)
// 'f' (-ddd.dddd,没有指数)
// 'g' ('e':大指数,'f':其它情况)
// 'G' ('E':大指数,'f':其它情况)
//
// 如果格式标记为 'e','E'和'f',则 prec 表示小数点后的数字位数
// 如果格式标记为 'g','G',则 prec 表示总的数字位数(整数部分+小数部分)
func FormatFloat(f float64, fmt byte, prec, bitSize int) string
// AppendFloat 将浮点数 f 转换为字符串值,并将转换结果追加到 dst 的尾部
// 返回追加后的 []byte
func AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte
示例如下:
package main
import (
"strconv"
"fmt"
)
func main() {
s := "0.1234567891122334455"
if f, err := strconv.ParseFloat(s, 32); err == nil {
fmt.Println(f) //12345679104328156
}
if f, err := strconv.ParseFloat(s, 64); err == nil {
fmt.Println(f) //0.12345678911223344
}
f := 0.12345678911223344
fmt.Println(strconv.FormatFloat(f, 'E', 5, 32)) //1.23457E-01
b32 := []byte("float32:")
b32 = strconv.AppendFloat(b32, 3.1415926535, 'E', -1, 32)
fmt.Println(string(b32)) //float32:3.1415927E+00
}