与字符串相关的类型转换都是通过 strconv 包实现的
1.1、Atoi()函数用于将字符串类型的整数转换为int类型
strconv.Atoi(s string) (i int, err error)
由于string可能无法转换为int,所以有两个返回值:第一个返回值是转换成的int值,第二个返回值判断是否转换成功
//var age ="22岁" 转换失败
var age ="22" // 转换成功
age1,err:=strconv.Atoi(age)
if err != nil {
fmt.Println("转换出错")
return
}else {
fmt.Printf("类型是:%T,值是:%d",age1,age1)
}
1.2、Itoa()函数用于将int类型数据转换为对应的字符串表示
strconv.Itoa(i int) string
i := 100
s := strconv.Itoa(i)
fmt.Println("类型是:%T 值是:%#v\n", s2, s2) // 类型是:string 值是:"999"
Parse类函数用于转换字符串为给定类型的值:ParseBool()、ParseFloat()、ParseInt()、ParseUint()
2.1、ParseBool()
strconv.ParseBool(str string) (value bool, err error)
返回字符串表示的bool值,它只接受值为1、0、t、f、T、F、true、false、True、False、TRUE、FALSE的字符串,否则返回错误
fmt.Println(strconv.ParseBool("1")) // true
fmt.Println(strconv.ParseBool("t")) // true
fmt.Println(strconv.ParseBool("T")) // true
fmt.Println(strconv.ParseBool("true")) // true
fmt.Println(strconv.ParseBool("True")) // true
fmt.Println(strconv.ParseBool("TRUE")) // true
fmt.Println(strconv.ParseBool("0")) // false
fmt.Println(strconv.ParseBool("f")) // false
fmt.Println(strconv.ParseBool("F")) // false
fmt.Println(strconv.ParseBool("false")) // false
fmt.Println(strconv.ParseBool("False")) // false
fmt.Println(strconv.ParseBool("FALSE")) // false
2.2、ParseInt()
返回字符串表示的整数值,接受正负号
strconv.ParseInt(s string, base int, bitSize int) (i int64, err error)
//转换成功
s1 := "123"
ps1,err := strconv.ParseInt(s1, 10, 8) // 指将s1转换为10进制数,8指的是转换结果最大值不超过int8,即127
if err != nil{
fmt.Printf("err is %v\n", err)
return
}else{
fmt.Printf("类型: %T ,值: %d", ps1, ps1) //类型: int64 ,值: 123
}
//转换失败
s1 := "129" // 超过int8最大值127
ps1,err := strconv.ParseInt(s1, 10, 8) // 指将s1转换为10进制数,8指的是转换结果最大值不超过int8,即127
if err != nil{
fmt.Printf("err is %v\n", err)
return
}else{
fmt.Printf("类型: %T ,值: %d", ps1, ps1) //err is strconv.ParseInt: parsing "129": value out of range
}
2.3 ParseUint()
ParseUint类似ParseInt但不接受正负号,用于无符号整型
strconv.ParseUint(s string, base int, bitSize int) (i int64, err error)
2.4、ParseFloat()
strconv.ParseFloat(s string, bitSize int) (f float64, err error)
f := "1.2342332"
f1, err := strconv.ParseFloat(f, 64)
if err != nil {
fmt.Printf("err is %v\n", err)
return
} else {
fmt.Printf("类型为:%T,值为:%f", f1, f1)
} //类型为:float64,值为:1.234230
将给定类型格式化为string类型数据
3.1、FormatBool()
用于将布尔类型的值转换为字符串类型
strconv.FormatBool(b bool) string
fmt.Println(strconv.FormatBool(0 < 1)) // true
fmt.Println(strconv.FormatBool(0 > 1)) // false
fmt.Println(strconv.FormatBool(true)) // 将true转换为字符串
3.2、FormatInt()
strconv.FormatInt(i int64, base int) string
s3 := strconv.FormatInt(-2, 16)
fmt.Printf("类型为:%T,值为:%#v",s3,s3) // 类型为:string,值为:"-2"
3.3、FormatUint()
是FormatInt的无符号整数版本
strconv.FormatUint(i int64, base int) string
3.4、FormatFloat()
将浮点数表示为字符串并返回
strconv.FormatFloat(f float64, fmt byte, prec, bitSize int) string
f := 100.123456789
fmt.Println(strconv.FormatFloat(f, 'g', 5, 64))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'G', 5, 64))
// 100.12
fmt.Println(strconv.FormatFloat(f, 'f', 5, 64))
// 100.12346
fmt.Println(strconv.FormatFloat(f, 'e', 5, 64))
// 1.00123e+02
fmt.Println(strconv.FormatFloat(f, 'E', 5, 64))
// 1.00123E+02
Append类的函数和Format类的函数工作方式类似,只不过将转换后的结果追加到一个slice中
4.1、AppendBool()
strconv.AppendBool(num1 []byte, num2 bool) []byte
val := []byte("Is Bool: ")
val = strconv.AppendBool(val, true)
fmt.Println(string(val)) // Is Bool: true
4.2、AppendFloat()
strconv.AppendFloat(dst []byte, f float64, fmt byte, prec int, bitSize int) []byte
val1 := []byte("Float32值:")
val1 = strconv.AppendFloat(val1,4.5683568954,'E',-1,32)
fmt.Println(string(val1))
val2 := []byte("Float64值:")
val2 = strconv.AppendFloat(val2,6.7415678653,'E',-1,64)
fmt.Println(string(val2))
4.3、AppendInt()
将 int 型整数 i 转换为字符串形式,并追加到 dst 的尾部
strconv.AppendInt(dst []byte, i int64, base int) []byte
val1 := []byte("整数值(进制10): ")
val1 = strconv.AppendInt(val1, -35, 10)
fmt.Println(string(val1)) //整数值(进制10): -35
val2 := []byte("整数值(进制16): ")
val2 = strconv.AppendInt(val2, -44, 16)
fmt.Println(string(val2)) //整数值(进制16): -2c
4.4、AppendUint()
是AppendInt的无符号整数版本
5.1、isPrint()
返回一个字符是否是可打印的,r必须是:字母(广义)、数字、标点、符号、ASCII空格
res:=strconv.IsPrint('n') // true 可打印
res:=strconv.IsPrint('\n') // false 不可打印
5.2、CanBackquote()
返回字符串s是否可以不被修改的表示为一个单行的、没有空格和tab之外控制字符的反引号字符串
res:=strconv.CanBackquote(`lxx is Nb`) // true
res:=strconv.CanBackquote(`lxx is
Nb`) // false :因为带回车
fmt.Println(res)