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)
}
//字符串转换为整数
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"
}
// 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("%s\n", rst) // "true"
}
// 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
}