Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > go 字符串转换

go语言实现字符串与其它类型转换(strconv包)

作者:fanfjaiynu

strconv包是Go语言标准库的一部分,主要提供字符串与基本数据类型之间的转换功能,使用strconv包可以方便地在不同类型之间进行转换,满足日常编程中的需求,感兴趣的可以了解一下

与字符串相关的类型转换都是通过 strconv 包实现的

strconv包概述

strconv是两个单词的缩写。string convert = strconv

strconv包位于Go语言的标准库中,它提供了一系列用于字符串和基本数据类型之间转换的函数。这些函数主要包括以下几种类型:

将字符串转换为其他基础类型的过程叫做解析parse,其他基础类型转换为字符串的过程成为格式化format

1、string与int类型转换

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"

2、Parse系列函数

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

3、Format系列函数

将给定类型格式化为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

4、Append系列

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、其它

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)

到此这篇关于go语言实现字符串与其它类型转换(strconv包)的文章就介绍到这了,更多相关go 字符串转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文