strconv包实现了基本类型与字符串之间的转换
Atoi()和Itoa()函数的使用
package main
import (
"fmt"
"strconv"
)
//strconv包的使用
func main() {
var strr string
strr = "123456"
//将字符串类型的整数转换为int
v, err := strconv.Atoi(strr)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("%T,%v\n", v, v)
//将int转换为字符串
str := strconv.Itoa(v)
fmt.Printf("%T,%v\n", str, str)
}
Parse类函数用于转换字符串为给定类型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()。
package main
import (
"fmt"
"strconv"
)
//strconv包的使用
func main() {
var str1 string
str1 = "True"
//返回字符串表示的bool值,它接受1、0、t、f、T、F、true、false、True、False、TRUE、FALSE;否则返回错误。
v, err1 := strconv.ParseBool(str1)
if err1 != nil {
fmt.Printf("%v\n", err1)
}
fmt.Printf("%v\n", v)
var str2 string
str2 = "123456"
// 返回字符串表示的整数值,接受正负号。
// 参数1:要处理的string
// 参数2:指定进制(2到36),如果base为0,则会从字符串前置判断,”0x”是16进制,”0”是8进制,否则是10进制;
// 参数3:指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64;
// 返回的err是*NumErr类型的,如果语法有误,err.Error = ErrSyntax;如果结果超出类型范围err.Error = ErrRange
vin, err2 := strconv.ParseInt(str2, 10, 64)
if err2 != nil {
fmt.Printf("%v\n", err2)
return
}
fmt.Printf("%v\n", vin)
//ParseUint类似ParseInt但不接受正负号,用于无符号整型。
vin1, err3 := strconv.ParseUint(str2, 10, 64)
if err3 != nil {
fmt.Printf("%v\n", err3)
return
}
fmt.Printf("%v\n", vin1)
var str3 string
str3 = "12.123456"
// 解析一个表示浮点数的字符串并返回其值。
// 如果s合乎语法规则,函数会返回最为接近s表示值的一个浮点数(使用IEEE754规范舍入)。
// bitSize指定了期望的接收类型,32是float32(返回值可以不改变精确值的赋值给float32),64是float64;
// 返回值err是*NumErr类型的,语法有误的,err.Error=ErrSyntax;结果超出表示范围的,返回值f为±Inf,err.Error= ErrRange。
float, err := strconv.ParseFloat(str3, 64)
if err != nil {
fmt.Printf("%v\n", err)
return
}
fmt.Printf("%v\n", float)
}
Format系列函数实现了将给定类型数据格式化为string类型数据的功能。
package main
import (
"fmt"
"strconv"
)
//strconv包的使用
func main() {
var bo bool
bo = true
// 根据参数的值返回”true”或”false”。
str1 := strconv.FormatBool(bo)
fmt.Printf("%T,%v\n", str1, str1)
var intt int64
intt = 123
//返回i的base进制的字符串表示。base 必须在2到36之间,结果中会使用小写字母’a’到’z’表示大于10的数字
str2 := strconv.FormatInt(intt, 10)
fmt.Printf("%T,%v\n", str2, str2)
//是FormatInt的无符号整数版本。
var i uint64
i = 123
str3 := strconv.FormatUint(i, 10)
fmt.Printf("%T,%v\n", str3, str3)
var f float64
f = 12.126456
// func FormatFloat(f float64, fmt byte, prec, bitSize int) string
// 函数将浮点数表示为字符串并返回。
// bitSize表示f的来源类型(32:float32、64:float64),会据此进行舍入。
// fmt表示格式:’f’(-ddd.dddd)、’b’(-ddddp±ddd,指数为二进制)、’e’(-d.dddde±dd,十进制指数)、’E’(-d.ddddE±dd,十进制指数)、’g’(指数很大时用’e’格式,否则’f’格式)、’G’(指数很大时用’E’格式,否则’f’格式)。
// prec控制精度(排除指数部分):对’f’、’e’、’E’,它表示小数点后的数字个数;对’g’、’G’,它控制总的数字个数。如果prec 为-1,则代表使用最少数量的、但又必需的数字来表示f。
str4 := strconv.FormatFloat(f, 'E', -1, 64)
fmt.Printf("%T,%v\n", str4, str4)
}